11 из 11 протестированных менеджеров паролей - 1Password, Bitwarden, LastPass, Dashlane, iCloud Passwords и ещё шесть - оказались уязвимы к DOM-based Extension Clickjacking в дефолтной конфигурации. Все. Без исключений. Марек Тот показал это на DEF CON 33 в августе 2025 года. Один клик пользователя на подконтрольном атакующему сайте - и кредитные карты, TOTP-секреты, логины с паролями утекают через легитимное расширение менеджера паролей. Суммарная аудитория уязвимых расширений - порядка 40 миллионов пользователей (по совокупным данным Chrome Web Store; цифра включает возможные пересечения). 1Password и LastPass пометили отчёт как "informative" и отказались выпускать патч. Для SOC-инженера, обслуживающего корпоративную среду с обязательным расширением менеджера паролей, это вектор утечки учётных данных, который не ловится ни EDR, ни стандартными SIEM-правилами. И вот это уже по-настоящему неприятно.
Атаки на менеджеры паролей: kill chain и бизнес-логика
Компрометированный vault менеджера паролей - это доступ к десяткам корпоративных и личных сервисов, TOTP-секреты для обхода MFA, данные платёжных карт. В MITRE ATT&CK этому соответствует техника T1555.005 - Password Managers (тактика Credential Access). Но для Blue Team критично видеть полную цепочку, а не изолированную технику:- Initial Access - жертва посещает вредоносный сайт или легитимный ресурс с XSS-уязвимостью. XSS - классический A03:2021 (Injection) по OWASP Top 10.
- Credential Access - DOM-based Extension Clickjacking вытаскивает из расширения менеджера паролей логины, пароли, TOTP, данные карт. Комбинация T1555.005 и T1212 - Exploitation for Credential Access.
- Valid Accounts - украденные credentials используются для входа в корпоративные сервисы. T1078 - Valid Accounts: начальный доступ, закрепление, повышение привилегий.
- Downstream - credential stuffing по всем сервисам из vault, lateral movement внутри инфраструктуры, финансовое мошенничество с украденными картами.
По данным, приводимым passwork.ru со ссылкой на Минцифры, прямой ущерб от кибератак в 2024 году достиг 160 млрд рублей (первичный источник требует верификации). Более 50% успешных атак связаны с человеческим фактором - слабые пароли и их повторное использование. Менеджеры паролей создавались для решения именно этой проблемы. Ирония: уязвимость менеджера паролей превращает решение в дополнительный вектор атаки. С ужесточением ответственности за утечки персональных данных и введением оборотных штрафов компрометация корпоративного хранилища паролей - это не только операционный, но и юридический риск.
DOM-based Extension Clickjacking: как работает взлом менеджера паролей
Классический web-clickjacking использует iframe: целевой сайт загружается в невидимый фрейм, клики пользователя перехватываются. Защита давно стандартизирована: заголовки
X-Frame-Options, Content-Security-Policy: frame-ancestors, cookie-атрибут SameSite=Lax. Большинство программ bug bounty перенесли iframe-clickjacking в раздел "out of scope".Тот показал принципиально другой подход. Расширения менеджеров паролей инжектят свои UI-элементы прямо в DOM страницы: выпадающие меню автозаполнения, иконки в полях ввода, оверлеи с предложением заполнить форму. Эти элементы - часть DOM, и JavaScript на странице может ими свободно манипулировать. Уязвимость автозаполнения паролей здесь не в самом autofill-механизме, а в том, что расширение отдаёт свой UI под контроль потенциально враждебного контекста. По сути, расширение само открывает дверь.
Атака работает в четыре шага:
- Расширение менеджера паролей обнаруживает поле ввода и инжектит в DOM элемент автозаполнения - dropdown-меню или кнопку
- Вредоносный скрипт на странице делает элемент расширения невидимым:
opacity: 0, манипуляцияz-index, наложение overlay - Пользователь видит поддельный UI - cookie-баннер, captcha «Подтвердите, что вы не робот», кнопку "Закрыть рекламу" - и кликает
- Реальный клик попадает на скрытый элемент расширения и активирует автозаполнение, отправляя данные атакующему
JavaScript:
// Демонстрация концепции (пример для понимания механики)
const extDropdown = document.querySelector('[data-pm-autofill]');
if (extDropdown) {
extDropdown.style.opacity = '0';
extDropdown.style.position = 'fixed';
const fakeUI = document.createElement('div');
fakeUI.textContent = 'Accept cookies to continue';
fakeUI.style.cssText = 'position:fixed;z-index:9999;cursor:pointer;';
document.body.appendChild(fakeUI);
}
X-Frame-Options и CSP frame-ancestors здесь бесполезны. Расширение работает в контексте страницы, его DOM-элементы неотличимы от элементов страницы с точки зрения JavaScript. Браузер не изолирует инжектированные расширением узлы DOM от скриптов страницы - и это архитектурная проблема, а не баг конкретного вендора.Тот описывает несколько вариантов позиционирования: partial overlay, full overlay, fixed position и under mouse cursor - UI-элемент, следующий за курсором. Большинство сценариев требуют одного клика от жертвы. Пользователь привык кликать на cookie-баннеры и captcha - атакующий эксплуатирует именно эту привычку. Один клик. Всё.
Контекст применимости и ограничения: DOM-based Extension Clickjacking работает против любого расширения, инжектящего элементы в DOM, - менеджеров паролей, криптокошельков, расширений для заметок. Техника не работает против встроенных в браузер менеджеров паролей: Google Password Manager использует нативный autofill Chrome, а не DOM-инъекции через extension API. Уязвимости Google Password Manager существуют, но они другой природы - T1555.003 (Credentials from Web Browsers), где attack surface связан с механизмами хранения и доступа к credentials на уровне браузерного процесса, а не DOM-манипуляций.
Утечка паролей из менеджера: что именно крадёт атакующий
Тот протестировал 11 расширений: 1Password, Bitwarden, Dashlane, Enpass, Keeper, LastPass, LogMeOnce, NordPass, ProtonPass, RoboForm и iCloud Passwords (как расширение для Chrome/Firefox). Выборка основана на рейтинге PCMag "The Best Password Managers for 2025" плюс iCloud Passwords (около 5 млн пользователей по данным Chrome Web Store).Знаменатели в таблице ниже различаются: не все менеджеры поддерживают все типы данных. Два из одиннадцати не хранят кредитные карты в расширении, один не поддерживает раздел персональных данных, два не хранят TOTP, три не реализуют passkeys.
| Тип данных | Уязвимы / Поддерживают | Вектор атаки | Кликов |
|---|---|---|---|
| Кредитные карты (вкл. CVV) | 6 из 9 | Сайт атакующего | 1 |
| Персональные данные | 8 из 10 | Сайт атакующего | 1 |
| Логины и пароли | 10 из 11 | XSS на целевом сайте или поддомене | 1 |
| TOTP-коды | 9 из 11 | XSS на целевом сайте или поддомене | 1 |
| Passkeys | 8 из 11 | XSS на целевом сайте или поддомене | 1-5 |
Две категории атак различаются по сложности. Кредитные карты и персональные данные можно украсть при визите жертвы на полностью контролируемый атакующим сайт - без эксплуатации уязвимостей на сторонних ресурсах. Для кражи логинов, паролей и TOTP нужен дополнительный вектор: XSS на сайте, к которому сохранён пароль, или subdomain takeover. Тот отдельно подчёркивает: все протестированные менеджеры заполняли credentials не только для основного домена, но и для всех поддоменов. XSS на любом поддомене крупного сервиса даёт доступ к credentials основного домена. Найти XSS на каком-нибудь забытом
dev.example.com - задача на пару часов для приличного пентестера.Статус исправлений (январь 2026): Dashlane, NordPass, ProtonPass, Keeper и RoboForm устранили уязвимость. Bitwarden, Enpass и LogMeOnce выпустили патчи (точные версии уточняйте в changelog вендора: bitwarden.com/help/releasenotes, enpass.io/changelog, logmeonce.com/release-notes). Уязвимость по-прежнему не исправлена в 1Password, iCloud Passwords и LastPass - предположительно десятки миллионов пользователей под угрозой.
VRP bug bounty, Google Password Manager и реакция вендоров на уязвимости
Реакция вендоров на отчёт Тота - показательный кейс для анализа уязвимостей парольных хранилищ и подходов к responsible disclosure.
1Password пометила отчёт как "informative" на HackerOne. Из ответа (по данным Socket.dev): "Clickjacking the autofill action for the personal identification item has also already been reported in previous programs, and will not be reconsidered at this time"."О случаях использования функции автозаполнения поля "Личные данные" с помощью кликджекинга уже сообщалось в предыдущих программах, и в настоящее время они рассматриваться не будут." Исследователи сообщали об этом так часто, что 1Password вынесла проблему в "out of scope". CISO 1Password Джейкоб ДеПрист заявил SecurityWeek: "Because the underlying issue lies in the way browsers render webpages, we believe there's no comprehensive technical fix that browser extensions can deliver on their own"."Так как, основная проблема заключается в способе отображения веб-страниц браузерами, мы считаем, что нет комплексного технического решения, которое могли бы обеспечить расширения браузера самостоятельно." Позиция вендора: это проблема архитектуры браузеров, не наша.
LastPass тоже пометил отчёт как "informative". Алекс Кокс, директор по threat intelligence LastPass, признал, что исследование "it highlights a broader challenge facing all password managers""это подчеркивает более широкую проблему, с которой сталкиваются все менеджеры паролей.". LastPass реализовал частичную защиту - pop-up перед автозаполнением кредитных карт - но не для логинов и паролей. То есть карты защитили, а credentials - нет. Приоритеты интересные.
LogMeOnce не ответил на обращение исследователя вообще. Патч (7.12.7) вышел только после публичного раскрытия на DEF CON 33. Молчание до публичного позора - классика.
На этом фоне Dashlane, NordPass, ProtonPass и Keeper выпустили патчи оперативно. Подход к обработке отчётов VRP bug bounty оказался ключевым дифференциатором: credential manager security flaws одного класса - диаметрально разная реакция.
Баг баунти и Google Password Manager - отдельная история. Google Password Manager - встроенный компонент Chrome, не расширение. Отчёты по безопасности Google Password Manager обрабатываются через Google VRP с назначением CVE и публичным раскрытием по фиксированному timeline. Chrome VRP предусматривает награды до $250 000+ за sandbox escape (согласно bughunters.google.com). Google VRP отчёт проходит полный цикл - от triage до CVE и патча. Контраст с "informative" от 1Password и LastPass - разительный. Это не означает, что Google Password Manager свободен от уязвимостей, но процесс реагирования на них принципиально отличается.
Для корпоративного выбора менеджера паролей этот анализ даёт конкретный критерий: не только функции продукта, но и то, как вендор обрабатывает баг баунти отчёты, признаёт ли credential manager security flaws и как быстро выпускает патчи. Я бы на месте CISO ставил этот критерий выше, чем наличие красивого дашборда.
Detection: как SOC обнаруживает атаки на парольные хранилища
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
- это первый шаг к контролю attack surface менеджеров паролей.
Hardening-чеклист: безопасность менеджера паролей в корпоративной среде
Чеклист рассчитан на передачу системному администратору или включение в отчёт аудита. Каждый пункт - конкретное действие с привязкой к уязвимостям менеджеров паролей, описанным выше.- Проверить статус патча - убедиться, что расширение менеджера паролей обновлено до версии с фиксом DOM-based clickjacking (таблица фиксов выше). Если вендор не патчил - эскалация на CISO с обоснованием risk acceptance
- Настроить Chrome Enterprise Policy -
ExtensionSettingsсruntime_blocked_hosts: ["[I]://[/I]/*"]по умолчанию, доступ расширения только к корпоративным доменам черезruntime_allowed_hosts - Включить режим "on click" для пользователей вне GPO - настройки расширения, "Доступ к сайтам", "По клику"
- Включить мониторинг расширений Chrome - Sysmon Event ID 13 для политик в
HKLM\Software\Policies\Google\Chrome\ExtensionSettings; Sysmon Event ID 11 (FileCreate) для пользовательских установок в%LOCALAPPDATA%\Google\Chrome\User Data\*\Extensions\ - Создать корреляционное правило для impossible travel и burst authentication по корпоративным SSO/IdP
- Отключить автозаполнение кредитных карт в расширении через корпоративную политику - наименее обоснованный корпоративный use case, наиболее чувствительный тип данных
- Настроить логирование CSP-нарушений на корпоративных веб-ресурсах для раннего обнаружения XSS - вектора для credential theft через autofill
- Аудит поддоменов - проверить корпоративные домены на subdomain takeover, поскольку брошенный поддомен позволяет красть credentials через autofill менеджера паролей
Уязвимости менеджеров паролей - не разовый инцидент, а системная проблема архитектуры браузерных расширений. Позиция 1Password и LastPass об "informative" формально корректна в одном: корневая причина в том, что браузеры не изолируют DOM-элементы расширений от JavaScript страницы. Пока Chrome, Firefox и Edge не реализуют изоляцию на уровне рендеринга, каждое расширение, инжектящее UI в DOM, останется потенциально уязвимым. Но вопрос в другом: должен ли вендор менеджера паролей ждать, пока браузер решит проблему, или реализовать mitigation самостоятельно? Dashlane, NordPass и Keeper выбрали второй вариант и справились.
Меня настораживает не сама техника - clickjacking известен два десятилетия - а реакция вендоров. Когда исследователь приносит zero-day с PoC и 40 миллионами пользователей в зоне поражения, а в ответ получает "informative" и попадание в "out of scope" - это сигнал, что threat model вендора не включает сценарий "пользователь зашёл на вредоносный сайт". Но это именно тот сценарий, ради которого существуют менеджеры паролей: защитить credentials пользователя там, где он не может защитить себя сам. Если хранилище паролей не обеспечивает безопасность при посещении вредоносного ресурса - чем оно лучше текстового файла с шифрованием?
Для корпоративных SOC практический вывод: не доверять дефолтным конфигурациям расширений, строить detection вокруг постфактумного обнаружения credential abuse (T1078) и вкладываться в инвентаризацию и контроль расширений через Chrome Enterprise Policy. Атаки на менеджеры паролей будут масштабироваться - слишком ценная цель с минимальным барьером входа для атакующего. Если адаптируете Chrome Enterprise-политику под контроль расширений или строите detection autofill-вектора - на codeby.net коллеги обсуждают конфигурации инвентаризации расширений и рабочие подходы к мониторингу в профильном треде.
Последнее редактирование модератором: