Специалисты Висконсинского университета в Мэдисоне подготовили специальное расширение для браузера Chrome и загрузили его в официальный магазин Chrome Web Store, чтобы доказать возможность кражи паролей в виде простого текста из кода веб-сайтов.
Анализ текстовых полей для ввода в Chrome показал, что модель разрешений допускает нарушение принципа минимальных привилегий со стороны расширений.
Ситуацию усугубляют также практики хранения паролей, которые демонстрируют отдельные веб-ресурсы. Например, на ряде сайтов Google и Cloudflare пароли могут храниться в виде простого текста непосредственно в HTML-коде страниц.
В результате условный установленный аддон Chrome может извлечь аутентификационную информацию.
Как объяснили исследователи, проблема кроется в пагубной практике — давать расширениям неограниченный доступ к дереву DOM сайтов, где они загружаются. Такой подход позволяет авторам аддонов добраться до конфиденциальных данных, которые пользователь вводит в поля.
Фактически условное расширение может воспользоваться API DOM для прямого извлечения значений введённых в поля данных, обходя при этом обфускацию. Протокол Manifest V3, который добавили в Google Chrome, ограничивает использование API, но всё равно не проводит чётких границ между расширениями и веб-страницами.
В качестве демонстрационного эксплойта (PoC) эксперты загрузили специальное расширение для Chrome, способное воровать пароли пользователей. В отчёте (PDF) утверждается, что в общей сложности 17 300 аддонов в Chrome Web Store (12,5%) запрашивают разрешение на работу с конфиденциальной информацией.
Помимо этого, специалисты опубликовали список сайтов, на которых отметились проблемы:
- gmail.com – пароли в виде открытого текста в коде HTML;
- cloudflare.com – пароли в виде открытого текста в коде HTML;
- facebook.com (ресурс принадлежит Meta, признанной экстремистской и запрещённой на территории России) – пользовательский ввод можно извлечь с помощью DOM API;
- citibank.com – пользовательский ввод можно извлечь с помощью DOM API;
- irs.gov – SSN хранятся в виде открытого текста в коде HTML;
- capitalone.com – SSN хранятся в виде открытого текста в коде HTML;
- usenix.org – SSN хранятся в виде открытого текста в коде HTML;
- amazon.com – данные банковских карт (включая код безопасности) и индекс хранятся в виде открытого текста в коде HTML.