Крах Chrome при обработке ссылок c экранированным нулевым символом

Материал из Викиновостей, свободного источника новостей

20 сентября 2015 года

В Chrome, Chromium, Opera и других браузерах на основе кода Chromium выявлена проблема, позволяющая инициировать крах браузера при открытии ссылок, содержащих экранированное представление нулевого символа. Крах наблюдается при открытии ссылок с %%300 или %%30%30 в URL, например, "http://a.com/%%300(недоступная ссылка)", "file:///%%300", http://a.com/%%30%30(недоступная ссылка)" и т.п. При наведении курсора на проблемную ссылку закрывается лишь текущая вкладка, но клик на ссылке приводит к закрытию браузера целиком.

Прямое использование "%00" в ссылках запрещено и вырезается на этапе разбора ссылки. Но косвенная передача нулевого кода оказалась возможной. При обработке ссылки последовательности "%%300" (%+%30+0) и "%%30%30" преобразуются в "%00" ("http://a.com/%00(недоступная ссылка)"), после чего передаются в вызов GURLToDatabaseURL(), внутри которого также вызывается функция ReplaceComponents(), предназначенная для удаления из ссылки информации логине и пароле. Внутри ReplaceComponents() дополнительно производится вторичная распаковка экранированных последовательностей, в результате которой "%00" превращается в символ с нулевым кодом. При возвращении в функцию GURLToDatabaseURL() выполняется вызов .spec(), который считает, что на вход передаётся корректный URL, но так как конец строки был сдвинут URL оказывается повреждён, что приводит к срабатыванию макроса DCHECK() и краху браузера.

Дополнение: С использованием ошибки в Chrome

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Крах Chrome при обработке ссылок c экранированным нулевым символом», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.