Баг движка Google Chrome уже используют для создания игр

от автора

19 сентября обнаружился баг Chrome. Браузер аварийно завершается, если в адресную строку ввести последовательность из 8 символов. В Google уже знают о баге, хотя обнаруживший не получил вознаграждения — это не уязвимость безопасности. Природа ошибки связана с некорректной обработкой нулевого байта. Атаку уже сравнили с похожим случаем, когда Skype полностью ломался — клиент завершался и больше не запускался — после вставки 16 символов.

Баг работает не только в самом браузере Chrome, но и в программах, использующих его движок — это как другие браузеры и сборки Chromium, так и Steam, клиенты мессенджера Slack и так далее. Для падения браузера нужно вставить ссылку в адресную строку, но также сработает наведение указателя мыши на гиперссылку с проблемным кодом. Последний факт уже используют для создания игр, которые наказывают падением браузера.

Комбинация из 16 символов — это http://a/%%30%30. При её вставке в адресную строку или при наведении указателя мыши на гиперссылку, ведущую на неё, происходит следующее:

  • Последовательность в конце ссылки преобразуется в %00, а 0x30 — это ASCII-код для 0. На конце УРЛ появляется нулевой байт.
  • УРЛ передаётся в GURLToDatabaseURL(), которая вызывает ReplaceComponents().
  • УРЛ снова обрабатывается, обнаруживается нулевой байт. Его там быть не должно, поэтому УРЛ помечается как недействительная.
  • Ссылка возвращается GURLToDatabaseURL(), со стороны которой ожидается валидность УРЛ. Происходит вызов spec().
  • УРЛ невалидна, отчего происходит вызов DCHECK(), что и приводит к падению.

При наведении курсора мыши над проблемной гиперссылкой происходит примерно подобное, хотя в этом случае УРЛ обрабатывается в другой части браузера. Но и здесь ожидается только корректный адрес.

Пощекотать себе нервы могут пользователи следующих веб-обозревателей: Google Chrome, Opera, «Яндекс.Браузера» и других хромоподобных браузеров на движке Blink. В Microsoft Edge, Internet Explorer и Mozilla Firefox игры не работают. Перед открытием одной из двух следующих страниц рекомендуется сохранить работу и убедиться в том, что не будут потеряны важные данные.

Первая игра носит название %%30%30. Это лабиринт, созданный обычным HTML-кодом. Он выглядит как веб-страница с кликабельными картинками, по которым нужно провести указатель мыши. Нужно располагать курсор строго над эмодзи с мишками, не натыкаясь на деревья, иначе браузер упадёт.

https://github.com/szhu/3030/tree/master

Так должен выглядеть процесс игры (2,26 МиБ)

Первый пример простой, но скучный. Второй куда более интерактивен и жесток. Это веб-сайт, на котором кликабельная точка гоняется за курсором мыши. Если она его настигнет, то попадёт в фокус, и браузер упадёт. Достижения в игре регистрирует счётчик очков. К недостаткам игры можно отнести низкую скорость движения и предсказуемость поведения «хищника».

http://linkofdeath.com/

Описание ошибки на баг-трекере Chromium

ссылка на оригинал статьи http://geektimes.ru/post/262882/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *