В старых версиях штатного AOSP-браузера обнаружена опасная уязвимость с нарушением правила ограничения домена (same-origin policy), одного из фундаментальных принципов сетевой безопасности. Баг присутствует во всех версиях, кроме 4.4+. А ведь для миллионов относительно старых устройств не планируется выпускать обновления. Да и вообще, Google официально прекратила поддержку AOSP-браузера. Так что единственный вариант для пользователей — деактивировать его в системе.
Концепция ограничения домена означает, что страницы одного сайта могут обращаться к ресурсам на других страницах того же самого домена, а вот доступ к ресурсам других сайтов сильно ограничен. Таким образом, один сайт не может получить куки с другого сайта, что вполне логично. У этого правила есть небольшое количество исключений, например, для ресурсов с атрибутом src
.
Но выяснилось, что парсер в браузере Android неправильно обрабатывает нулевые байты (u0000), из-за чего нарушается правило ограничения домена. Уязвимость изначально нашли больше двух недель назад, но специалисты не сразу осознали весь масштаб происшедшего. Сейчас подтверждено, что уязвимость присутствует на всех устройствах и во всех версиях Android до 4.4.
Проверить её очень просто: нужно поместить следующий код в веб-страницу на своём сайте — и наслаждаться появлением всплывающего окна. А ведь вместо окна могло быть что-то более опасное. И нет никакой гарантии, что этот баг не использовался все годы существования ОС Android. Что ещё хуже, он до сих пор остался незакрытым на сотнях миллионов смартфонов и планшетов, и патчей для них не предвидится.
<iframe name="test" src="http://www.rhainfosec.com"></iframe>
<input type=button value="test"
onclick="window.open('\u0000javascript:alert(document.domain)','test')" >
Разработчики пентестерского фреймворка Metasploit сначала не поверили, что такой простой и опасный баг присутствовал в Android много лет, затем они ужаснулись, назвали баг «кошмаром для приватности» и включили его в набор модулей Metasploit.
Конфигурация модуля для копирования куков example.com
.
msf> use auxiliary/gather/android_stock_browser_uxss
msf> set TARGET_URLS http://example.com
msf> run