Группа исследователей из Висконсинского университета в Мадисоне разместила в Интернет-магазине Chrome Web пробный вариант расширения, позволяющего перехватывать пароли, доступные в открытом виде в исходном коде сайта.
Изучение полей ввода текста в браузерах показало, что грубая модель разрешений, лежащая в основе расширений Chrome, нарушает принципы минимальных привилегий и полного посредничества.
Кроме того, исследователи обнаружили, что многие сайты с миллионной посещаемостью, в том числе некоторые порталы Google и Cloudflare, хранят пароли в открытом виде в исходном коде HTML-страниц, что делает их доступными для расширений.
Источник проблемы
По мнению исследователей, проблема связана с системной практикой предоставления браузерным расширениям неограниченного доступа к DOM-дереву загружаемых сайтов. В результате расширения могут получить доступ к потенциально чувствительным элементам, таким как пользовательские поля ввода.
Из-за отсутствия какого-либо барьера безопасности между расширением и элементами сайта,браузерное расширение получает неограниченный доступ к данным, доступным в исходном коде, и может извлекать любое их содержимое.
Расширение может злоупотреблять доступом к DOM API для прямого извлечения значения данных в момент их ввода, обходя все применяемые сайтом обфускации и программно похищая это значение.
Новый протокол Manifest V3, представленный в Google Chrome и принятый большинством браузеров в этом году, ограничивает злоупотребление API и запрещает расширениям получать удаленно размещенный код, который может помочь избежать обнаружения, а также предотвращает использование выражений с методом eval, приводящих к выполнению произвольного кода.
Тем не менее, Manifest V3 не устанавливает границу безопасности между расширениями и веб-страницами, поэтому проблема со скриптами в контенте остается.
Опасное расширение успешно размещено в Интернет-магазине Chrome
Чтобы протестировать свою концепцию, исследователи решили разработать расширение Chrome, способное перехватывать пароль, и попытались разместить его в Интернет-магазине Chrome.
Исследователи создали расширение, выдающее себя за помощника на основе GPT, которое может:
Получать исходный код HTML-страницы, когда пользователь пытается войти на страницу.
Злоупотреблять селекторами CSS для выбора целевых полей ввода и извлечения пользовательских данных с помощью метода .value.
Производить замену элементов, чтобы заменить обфусцированные поля на основе JS полями небезопасного пароля.
Расширение не содержит очевидный вредоносного код и не получает код из внешних источников (динамическая инъекция), поэтому соответствует Manifest V3.
В результате расширение прошло проверку и было размещено в Интернет-магазине Google Chrome, так что проверки безопасности не выявили потенциальной угрозы.
Чтобы исключить сбор и использование реальных данных, команда придерживалась этических норм, отключив сервер приема данных и оставив активным только сервер таргетинга элементов.
Кроме того, расширение постоянно находилось в состоянии «неопубликовано», чтобы его не скачало большое количество человек, а после успешного размещения было удалено с площадки.
Потенциал эксплуатации
Проведенное исследование показало, что из 10 тысяч крупнейших сайтов (по данным сервиса Tranco) примерно 1100 хранят пароли пользователей в виде обычного текста в HTML DOM.
Еще 7300 сайтов из того же набора оказались уязвимы для доступа к DOM API и прямого извлечения введенного пользователем значения.
В техническом ответе, опубликованном исследователями из Висконсинского университета в Мадисоне, утверждается, что около 17 300 расширений в Интернет-магазине Chrome (12,5%) имеют необходимые разрешения для извлечения конфиденциальной информации с сайтов.
Некоторые из них, включая популярные блокировщики рекламы, имеют несколько миллионов установок.
В отчете упоминаются следующие уязвимые сайты:
gmail.com — пароли в открытом виде в исходном коде HTML
cloudflare.com — пароли в открытом виде в исходном коде HTML
facebook.com — пользовательские данные могут быть извлечены через DOM API
citibank.com — пользовательские данные могут быть извлечены через DOM API
irs.gov — SSN в открытом виде в исходном коде HTML
capitalone.com — SSN в открытом виде в исходном коде HTML
usenix.org — SSN в открытом виде в исходном коде HTML
amazon.com — данные кредитной карты (включая код безопасности) и ZIP-код доступны в открытом виде в исходном коде HTML
Анализ показал, что 190 расширений (некоторые из которых имеют более 100 тыс. загрузок) напрямую обращаются к полям паролей и хранят значения в переменной. Можно предположить, что некоторые издатели уже пытаются использовать эту брешь в безопасности.
Некоторые компании уже отреагировали на данное исследование. Например, компания Amazon дала свой комментарий на этот счет:
В компании Amazon безопасность клиентов является одним из главных приоритетов, и мы предпринимаем ряд мер для ее защиты. Информация о клиентах, вводимая на веб-сайтах Amazon, надежно защищена. Мы призываем разработчиков браузеров и расширений использовать передовые методы обеспечения безопасности для дополнительной защиты клиентов, пользующихся их услугами.
Представитель Google подтвердил, что данный вопрос рассматривается, и сослался на FAQ по безопасности расширений Chrome, в котором доступ к полям паролей не рассматривается как проблема безопасности, если соответствующие разрешения получены легитимным путем.
https://www.playground.ru/misc/news/rasshireniya_chrome_mogut_perehvatyvat_paroli_peredavaemye_v_otkrytom_tekstovom_vide-1649009