Chrome DevTools가 자체 XSS 공격을 방어하는 데 도움이 되는 방법

Wolfgang Beyer
Wolfgang Beyer

자체 XSS 공격이란 무엇인가요?

셀프 XSS(셀프 교차 사이트 스크립팅)는 사용자를 속여 웹브라우저에서 악성 코드를 실행하도록 유도하는 소셜 엔지니어링 공격의 한 유형입니다. 공격자가 악성 코드를 삽입할 수 있는 웹 애플리케이션의 취약점을 이용하는 일반적인 XSS 공격과 달리, 자체 XSS 공격은 개발자가 실행할 수 있는 잠재적인 코드 실행 작업을 이용합니다.

셀프 XSS 공격은 일반적으로 공격자가 사용자를 속여 악성 코드를 복사하여 브라우저의 DevTools 콘솔에 붙여넣도록 유도하는 것을 말합니다. 공격자는 일반적으로 일종의 보상을 약속하여 이를 달성합니다. 다음과 같은 이유로 발생할 수 있습니다.

  • 코드를 사용하면 숨겨진 기능이나 가상 리워드에 액세스할 수 있다고 약속합니다.
  • 코드를 보안 테스트 또는 버그 수정이라고 속이는 행위
  • 이 코드를 사용하면 이익을 위해 웹사이트를 해킹할 수 있다고 약속합니다.

코드를 실행하면 공격자가 계정을 제어할 수 있습니다. 이를 통해 공격자는 다음 작업을 할 수 있습니다.

  • 이름, 주소, 신용카드 번호와 같은 개인 정보를 도용합니다.
  • 나를 대신하여 승인되지 않은 메시지 또는 댓글을 게시합니다.
  • 소셜 미디어 계정을 관리하세요.
  • 다른 사용자에게 멀웨어를 퍼뜨립니다.

Chrome DevTools는 자체 XSS 공격을 어떻게 완화하나요?

사용자가 DevTools에 코드를 붙여넣은 후 실행하도록 허용하는 것은 본질적으로 위험합니다. 하지만 Chrome DevTools의 핵심 기능 중 하나이기도 합니다. 따라서 잠재적인 자체 XSS 공격을 완화하는 것과 웹사이트를 디버그하려는 개발자의 작업을 방해하지 않는 것 사이에서 균형을 찾아야 했습니다.

개발자는 일반적으로 웹에서 찾은 코드를 복사하여 DevTools에 붙여넣고 실행하기 전에 먼저 코드가 하는 일을 빠르게 살펴보지 않습니다. 대부분의 개발자는 웹의 모호한 구석에서 찾은 코드를 실행할 때의 보안 위험을 잘 알고 있습니다.

Chrome DevTools는 개발자가 자신이 하는 작업을 알고 있다고 신뢰합니다. 코드를 복사하여 붙여넣을 때 속도를 느리게 하거나 방해가 되어서는 안 됩니다.

개발자가 아닌 사용자는 셀프 XSS 공격의 피해를 입을 위험이 훨씬 더 높습니다. 사용자를 보호하기 위해 Google은 사용자가 위험할 수 있는 작업을 할 때 중단하는 것이 허용되고 유익하다고 생각합니다. Chrome DevTools에서 경험이 없는 사용자가 DevTools에 코드를 붙여넣으려고 시도하는 것을 감지하면 중지되고 경고가 표시됩니다.

DevTools에 자체 XSS 경고가 표시되는 경우는 언제인가요?

DevTools는 매우 간단한 휴리스틱을 사용하여 자체 XSS 경고를 표시할지 결정합니다. 이는 사용자 프로필의 콘솔 기록을 기반으로 합니다.

프로필의 콘솔 기록에 항목이 5개 이상 있으면 DevTools에서 경고나 팝업을 표시하지 않습니다. 콘솔 기록은 콘솔에서 입력하고 실행한 명령어 목록입니다. 콘솔에 커서를 놓고 위쪽 화살표 키를 반복해서 누르면 표시되는 명령어입니다.

자체 XSS 경고는 어떻게 표시되나요?

경험이 없는 사용자가 콘솔에 코드를 붙여넣으려고 하면 이 작업이 차단되고 콘솔에 경고가 표시됩니다.

Console의 자체 XSS 경고

이 경고를 재정의하고 붙여넣기를 사용 설정할 수 있지만 이렇게 하려면 'allow pasting'를 입력해야 합니다.

경험이 없는 사용자가 DevTools 코드 편집기 (예: 소스 패널)에 코드를 붙여넣으면 사용자 환경이 매우 유사합니다. 경고 대신 모달 대화상자가 표시됩니다.

소스 패널의 자체 XSS 모달 대화상자

이 대화상자를 닫는 것만으로는 붙여넣기를 사용 설정할 수 없습니다. 경고를 재정의하려면 입력란에 'allow pasting'를 입력해야 합니다.

일회성 설정인가요?

예. 붙여넣기를 허용하면 더 이상 자체 XSS 경고가 표시되지 않습니다.

이렇게 하면 유용성과 불편함 사이의 균형을 잘 맞출 수 있을 것입니다. 이러한 불편을 추가하면 사용자가 경고를 읽을 가능성이 높아져 셀프 XSS 공격이 성공할 가능성이 줄어듭니다.

Chrome DevTools는 Chrome 프로필에 자체 XSS 경고를 표시할지 여부를 지정하는 플래그를 유지합니다. 따라서 새 프로필을 만들고 즉시 DevTools에 코드 붙여넣기를 시작하면 붙여넣기가 차단되고 대신 자체 XSS 경고가 표시됩니다.

테스트 자동화를 위해 사용 중지할 수 있나요?

자동 테스트는 어떨까요? 많은 테스트 도구는 테스트 실행마다 새 임시 프로필을 만듭니다. 따라서 DevTools를 사용하여 자동 테스트를 디버그하는 경우 Console에 붙여넣는 작업이 처음에는 차단됩니다.

이 문제를 해결하려면 다음 중 하나를 수행하세요.

  • 테스트 및 자동화를 위해 특별히 설계된 다양한 Chrome인 Chrome for Testing을 사용하세요. 자체 XSS 경고가 사용 중지되었습니다.

  • 다른 Chrome 출시 채널의 경우 --unsafely-disable-devtools-self-xss-warnings 명령줄 플래그를 Chrome에 전달하여 자체 XSS 경고 대화상자를 완전히 사용 중지합니다.

결론

자체 XSS 공격을 완화하기 위한 이 전략에 대해 어떻게 생각하시나요? 의견이나 제안이 있는 경우 이 버그에 댓글을 추가하거나 다음 방법 중 하나를 사용하여 문의해 주세요.

특히 콘솔 로그를 통해 자체 XSS 공격에 대해 경고하는 웹사이트를 운영하는 경우 Google의 노력을 조정하거나 자체 XSS 완화 조치의 영향을 측정하는 방법을 논의하고자 합니다.

미리보기 채널 다운로드

Chrome Canary, 개발자 또는 베타를 기본 개발 브라우저로 사용하는 것이 좋습니다. 이러한 미리보기 채널을 사용하면 최신 DevTools 기능에 액세스하고, 최신 웹 플랫폼 API를 테스트하고, 사용자가 발견하기 전에 사이트에서 문제를 찾을 수 있습니다.

Chrome DevTools팀에 문의하기

다음 옵션을 사용하여 DevTools와 관련된 새로운 기능, 업데이트 또는 기타 사항을 논의하세요.