Как Chrome DevTools помогает защититься от самостоятельных XSS-атак

Вольфганг Байер
Wolfgang Beyer

Что такое self-XSS-атаки?

Self-XSS , или самостоятельный межсайтовый скриптинг, — это тип атаки социальной инженерии, которая заставляет вас выполнить вредоносный код в вашем веб-браузере. В отличие от обычных XSS-атак , которые основаны на уязвимостях в веб-приложениях, позволяющих злоумышленникам внедрять вредоносный код, самостоятельные XSS-атаки основаны на ваших собственных потенциальных действиях по выполнению кода.

Self-XSS-атаки обычно включают в себя злоумышленник, заставляющий вас скопировать и вставить вредоносный код в консоль DevTools вашего браузера. Злоумышленник обычно добивается этого, обещая какое-то вознаграждение. Это может быть:

  • Обещая вам, что код предоставит вам доступ к скрытым функциям или виртуальным наградам.
  • Делая вид, что код представляет собой тест безопасности или исправление ошибок.
  • Обещая, что код позволит взломать сайт ради вашей выгоды.

Как только вы выполните код, злоумышленник сможет получить контроль над вашей учетной записью. Это может позволить злоумышленнику:

  • Украдите вашу личную информацию, такую ​​как имя, адрес и номер кредитной карты.
  • Публиковать несанкционированные сообщения или комментарии от вашего имени.
  • Возьмите под контроль свои учетные записи в социальных сетях.
  • Распространять вредоносное ПО среди других пользователей.

Как Chrome DevTools пытается смягчить атаки XSS на себя?

Позволить пользователям вставлять код в DevTools и затем выполнять его по своей сути рискованно. Но это также одна из основных функций Chrome DevTools. Поэтому нам пришлось найти баланс между смягчением потенциальных атак self-XSS и отсутствием вмешательства в работу разработчиков, которые просто хотят отлаживать веб-сайты.

Разработчики обычно не копируют код, который они нашли где-то в Интернете, не вставляют его в DevTools и не выполняют, предварительно не взглянув на то, что делает этот код. Большинство разработчиков хорошо осведомлены о рисках безопасности, связанных с выполнением кода, который они нашли в сомнительном уголке Интернета.

Chrome DevTools доверяет разработчикам, которые знают, что они делают. Мы не хотим каким-либо образом замедлять или отвлекать их, когда они копируют и вставляют код.

Мы считаем, что лица, не являющиеся разработчиками, подвергаются гораздо более высокому риску стать жертвой XSS-атаки. Мы считаем приемлемым и полезным прерывать вас, когда вы делаете что-то потенциально опасное, чтобы защитить вас. Когда Chrome DevTools обнаруживает, что неопытный пользователь пытается вставить код в DevTools, он останавливается и отображает предупреждение.

Когда DevTools будет отображать предупреждения XSS?

DevTools использует очень простую эвристику, чтобы решить, отображать ли собственные предупреждения XSS: она основана на истории консоли вашего профиля пользователя.

Если в вашем профиле есть хотя бы 5 записей в истории консоли, DevTools не будет беспокоить вас предупреждениями или всплывающими окнами. История консоли — это список команд, которые вы ввели и выполнили в консоли . Это команды, которые вы видите, когда помещаете курсор в консоль и несколько раз нажимаете клавишу со стрелкой вверх.

Как выглядят предупреждения XSS?

Когда неопытный пользователь пытается вставить код в Консоль , это действие блокируется, и вместо этого Консоль отображает предупреждение.

Предупреждение о самостоятельном XSS в консоли.

Вы можете обойти это предупреждение и включить вставку, но для этого вам нужно ввести «разрешить вставку».

Когда неопытный пользователь вставляет код в редактор кода DevTools (например, на панель «Источники» ), пользовательский опыт очень похож. Вместо предупреждения вы увидите модальный диалог.

Модальное диалоговое окно self-XSS на панели «Источники».

И опять же, одного только закрытия этого диалога недостаточно, чтобы включить вставку. Чтобы отменить предупреждение, вам нужно ввести «разрешить вставку» в поле ввода.

Это разовая настройка?

Да, как только вы решите разрешить вставку, вас больше не будут беспокоить предупреждения XSS.

Мы надеемся, что это позволит достичь хорошего компромисса между полезностью и неудобством. Добавляя трение, мы увеличиваем вероятность того, что вы прочитаете предупреждение, и, следовательно, уменьшаем вероятность успешной атаки с помощью XSS.

Chrome DevTools хранит флаг, указывающий, следует ли отображать предупреждения о XSS в вашем профиле Chrome. Поэтому, если вы создаете новый профиль и сразу же начинаете вставлять код в DevTools, вставка блокируется и вместо этого отображаются предупреждения XSS.

Можете ли вы отключить его для автоматизации тестирования?

А как насчет автоматизированных тестов? Многие инструменты тестирования создают новый временный профиль для каждого запуска теста. Поэтому, если вы используете DevTools для отладки автоматических тестов, вставка в консоль изначально блокируется.

Чтобы обойти эту проблему, выполните одно из следующих действий:

  • Используйте Chrome для тестирования — разновидность Chrome, разработанную специально для тестирования и автоматизации. Предупреждения Self-XSS отключены.

  • Для других каналов выпуска Chrome передайте в Chrome флаг командной строки --unsafely-disable-devtools-self-xss-warnings чтобы полностью отключить диалоговое окно предупреждения self-xss.

Заключение

Что вы думаете об этой стратегии смягчения атак XSS на себя? Если у вас есть комментарии или предложения, оставьте комментарий к этой ошибке или свяжитесь с нами одним из следующих способов.

Особенно, если вы работаете над веб-сайтом, который предупреждает о самостоятельных XSS-атаках через журналы консоли, мы хотели бы поговорить о согласовании наших усилий или измерении воздействия мер по смягчению последствий самостоятельного XSS.

Загрузите предварительный просмотр каналов

Рассмотрите возможность использования Chrome Canary , Dev или Beta в качестве браузера для разработки по умолчанию. Эти каналы предварительного просмотра предоставляют вам доступ к новейшим функциям DevTools, позволяют тестировать передовые API-интерфейсы веб-платформы и помогают находить проблемы на вашем сайте раньше, чем это сделают ваши пользователи!

Свяжитесь с командой Chrome DevTools

Используйте следующие параметры, чтобы обсудить новые функции, обновления или что-либо еще, связанное с DevTools.