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가 경고나 팝업을 표시하지 않습니다. 콘솔 기록은 콘솔에 입력하고 실행한 명령어의 목록입니다. 콘솔에 커서를 놓고 위쪽 화살표 키를 반복적으로 누르면 표시되는 명령어입니다.

self-XSS 경고는 어떻게 표시되나요?

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

콘솔의 자체 XSS 경고

이 경고를 무시하고 붙여넣기를 사용 설정할 수 있지만 '붙여넣기 허용'을 입력해야 합니다.

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

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

마찬가지로 이 대화상자를 닫는 것만으로는 붙여넣기를 사용 설정할 수 없습니다. 경고를 무시하려면 입력란에 '붙여넣기 허용'을 입력해야 합니다.

일회성 설정인가요?

예, 붙여넣기를 허용하기로 결정하면 다시는 자체 XSS 경고를 받지 않아도 됩니다.

이 기능을 통해 유용성과 불편함 사이에서 적절한 균형을 이룰 수 있기를 바랍니다. 장애 요소를 추가하여 사용자가 경고를 읽을 가능성을 높여주므로 자체 XSS 공격이 성공할 가능성이 줄어듭니다.

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

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

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

이 문제를 방지하려면 다음 중 한 가지 방법을 사용하세요.

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

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

결론

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

특히 콘솔 로그를 통해 자체 XSS 공격에 대해 경고하는 웹사이트에서 작업하는 경우, 저희의 노력을 조율하거나 자체 XSS 완화 조치의 영향을 측정하는 방법에 대해 논의하고 싶습니다.

미리보기 채널 다운로드

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

Chrome DevTools 팀에 문의하기

다음 옵션을 사용하여 게시물의 새로운 기능과 변경사항 또는 DevTools와 관련된 다른 사항에 대해 논의하세요.

  • crbug.com을 통해 제안이나 의견을 보내주세요.
  • DevTools에서 옵션 더보기   더보기   > 도움말 > DevTools 문제 신고를 사용하여 DevTools 문제를 신고하세요.
  • @ChromeDevTools에서 트윗하세요.
  • DevTools의 새로운 기능 YouTube 동영상 또는 DevTools 도움말 YouTube 동영상에 의견을 남겨주세요.