Xakep #305. Многошаговые SQL-инъекции
Специалисты из Висконсинского университета в Мадисоне обнаружили, что в Chrome Web Store можно загружать расширения, которые могут воровать пароли от сайтов прямо из их исходного кода.
Исследователи рассказывают, что обнаруженная ими проблема связана с практикой предоставления расширениям неограниченного доступа к DOM-дереву сайтов, на которых они загружаются. Это позволяет получить доступ к потенциально конфиденциальным элементам, включая поля для пользовательского ввода (user input).
Так как границ безопасности между расширением и элементами сайта нет, расширения получают неограниченный доступ к данным в исходном коде, и могут извлекать оттуда произвольное содержимое.
Кроме того, расширения могут злоупотреблять API DOM для прямого извлечения значения input’а по мере ввода данных пользователем, обходя любую обфускацию, применяемую сайтом для защиты конфиденциальных данных.
Новый Manifest V3, принятый большинством браузеров в этом году, ограничивает злоупотребления API, запрещает расширениям получать удаленный код, а также предотвращает использование eval, что может привести к выполнению произвольного кода. Однако, по словам экспертов, Manifest V3 не имеет границ безопасности, которые устанавливались бы между расширениями и веб-страницами, поэтому проблема с контент-скриптами сохраняется.
Чтобы доказать эту теорию исследователи создали специальное вредоноснее proof-of-concept расширение и попробовали загрузить его в Chrome Web Store.
Расширение, выдававшее себя за помощника в работе с GPT, могло:
- захватывать исходный HTML-код, когда пользователь пытается войти на страницу с помощью регулярного выражения;
- злоупотреблять селекторами CSS для выбора целевых полей ввода и извлечения вводимых пользователем данных с помощью функции .value.
- выполнять замену элементов, чтобы заменить обфусцированные поля на основе JS полями для небезопасного ввода пароля.
Так как расширение не содержало очевидно вредоносного кода, ему благополучно удалось обойти статический анализ. Также оно не получало код из внешних источников, поэтому соответствовало требованиям Manifest V3. В результате расширение прошло проверки, и было успешно размещено в Chrome Web Store.
В отчете экспертов подчеркивается, что в своем тесте они исключили сбор реальных данных пользователей, отключив сервер приема данных и оставив активным только сервер для таргетинга элементов. Кроме того, расширение находилось в статусе «unpublished», чтобы не набирать большого количества загрузок, а после утверждения было оперативно удалено из каталога.
Последующий анализ показал, что из 10 000 самых посещаемых сайтов в интернете (по версии Tranco) примерно 1100 хранят пароли пользователей в виде простого текста, используя HTML DOM. Еще 7300 сайтов были признаны уязвимыми для доступа к DOM API и прямого извлечения user input.
В итоге эксперты утверждают, что около 17 300 расширений в Chrome Web Store (12,5% от обего числа) имеют необходимые разрешения для извлечения конфиденциальной информации с сайтов. Некоторые из них, включая популярные блокировщики рекламы и приложения для шоппинга, насчитывают миллионы установок.
В качестве примеров сайтов, на которых отсутствует защита, эксперты перечисляют:
• gmail.com – пароли открытым текстом в исходном HTML-коде;
• cloudflare.com – пароли открытым текстом в исходном HTML-коде;
• facebook.com* – пользовательские данные можно извлечь через DOM API;
• citibank.com – пользовательские данные можно извлечь через DOM API;
• irs.gov – номера социального страхования «видны» открытым текстом в исходном коде страницы;
• capitalone.com – номера социального страхования «видны» открытым текстом в исходном коде страницы;
• usenix.org – номера социального страхования «видны» открытым текстом в исходном коде страницы;
• amazon.com — данные банковских карты (включая коды CVV) и почтовые индексы отображаются в исходном коде страницы открытым текстом.
Кроме того, анализ выявил 190 расширений (некоторые загружены более 100 000 раз), которые напрямую получают доступ к полям ввода паролей и сохраняют значения в переменной, что позволяет предположить, что некоторые уже пытаются эксплуатировать эту уязвимость.
Журналисты издания Bleeping Computer обратились к ИТ-гигантам с вопросом, планируют ли они устранить риски, описанные исследователям. В Amazon сообщили, что «клиентская информация, введенная на сайтах Amazon, находится в безопасности», а также посоветовали разработчикам браузеров и расширений «использовать передовые методы обеспечения безопасности для дальнейшей защиты клиентов».
В Google, в свою очередь, ответили, что изучают поднятые исследователями вопросы, но также сослались на FAQ по безопасности расширений, которое гласит, что доступ к полям для ввода паролей не считается проблемой безопасности, если необходимые для этого разрешения получены должным образом.
* Запрещен в России. Принадлежит Meta Platforms, деятельность которой признана экстремисткой и запрещена в России.