LINUX.ORG.RU

Атака на браузерные дополнения с менеджерами паролей, использующая кликджекинг

 , , , ,

Атака на браузерные дополнения с менеджерами паролей, использующая кликджекинг

3

3

На конференции DEF CON 33 представлен метод атаки на браузерные дополнения, подставляющие свои элементы интерфейса в просматриваемую страницу. Применение атаки к дополнениям с менеджерами паролей может привести к утечке хранимой в менеджерах паролей информации, такой как параметры аутентификации, параметры кредитных карт, персональные данные и одноразовые пароли для двухфакторной аутентификации. Проблема затрагивает все протестированные менеджеры паролей, включая 1Password, Bitwarden, LastPass, KeePassXC-Browser, NordPass, ProtonPass и Keeper.

Метод атаки основан на том, что браузерные дополнения подставляют диалог с запросом автоподстановки пароля непосредственно на отображаемую страницу, интегрируя свои элементы в DOM (Document Object Model) данной страницы. Если атакующий имеет возможность выполнить свой JavaScript-код на странице, например, эксплуатировав XSS-уязвимость на сайте, то он может манипулировать всеми элементами в DOM, в том числе подставленными браузерными дополнениями.

Среди прочего, имеется возможность сделать диалог подтверждения прозрачным и пространственно совместить кнопку в этом диалоге с кнопкой подставного диалога, созданного атакующим и стимулирующего пользователя к клику. В качестве подобных подставных диалогов могут использоваться фиктивные запросы полномочий работы с Cookie, рекламные баннеры или формы с капчей. Разместив подставной диалог под прозрачным диалогом менеджера пароля и совместив местоположение кнопок на экране, можно добиться того, что клик пользователя придётся на кнопку подтверждения заполнения параметров аутентификации в диалоге менеджера паролей, хотя пользователь будет считать, что он кликнул, например, на кнопку закрытия окна с рекламой.

Атака сводится к следующим шагам:

  • Создание навязчивого элемента на странице, стимулирующего совершение клика.
  • Добавление на страницу web-формы для входа или заполнения персональных данных.
  • Выставление прозрачности для web-формы («opacity: 0.001» в CSS).
  • Использование метода focus() для выставления фокуса ввода на поле в форме, приводящего к активации диалога автозаполнения менеджера паролей.
  • Поиск появившегося диалога менеджера паролей в DOM и выставление для него прозрачности.
  • Ожидание клика пользователя на видимом навязчивом элементе на странице, который при должном совмещении видимых и невидимых элементов приведёт к нажатию на кнопку в прозрачном диалоге и заполнению полей менеджером паролей.
  • Извлечение данных из заполненной web-формы и отправка их на сервере атакующего.

Так как автозаполнение параметров аутентификации в менеджере паролей активируется только для сайтов, при открытии которых данные параметры были сохранены, для организации атаки необходимо иметь возможность запустить свой JavaScript-код на атакуемом сайте или в поддомене. Таким образом, для атаки необходимо либо получить поддомен в том же домене, что и атакуемый сайт, либо найти XSS-уязвимость на сайте, позволяющую внедрить свой код в выводимое пользователю содержимое.

Отмечается, что многие пользователи используют один менеджер паролей как для хранения параметров входа, так и для генерации одноразовых паролей для двухвакторной аутентификации, что позволяет использовать рассматриваемый метод атаки при автозаполненении одноразовых паролей. В качестве примера продемонстрирована атака на сайт issuetracker.google.com, содержащий XSS-уязвимость. Для получения параметров входа и кода для двухфакторной аутентификации достаточно отправить пользователю ссылку, эксплуатирующую XSS-уязвимость, и добиться трёх кликов через подстановку фиктивных навязчивых запросов (разрешение обработки Cookie, разрешение персонализации и согласие с политикой обеспечения конфиденциальности).

Помимо сайтов с XSS-уязвимостями атака может быть совершена на сервисы, предоставляющие поддомены всем желающим - большинство менеджеров паролей в конфигурации по умолчанию выполняет заполнение параметров входа не только для основного домена, но и для поддоменов.

Атака также может применяться для определения сохранённых в менеджере паролей персональных данных пользователя и параметров кредитных карт. При этом для утечки подобных данных нет необходимости в выполнении JavaScript-кода в контексте чужого сайта и достаточно заманить жертву на страницу на сайте атакующего - в случае персональных данных заполнение web-форм производится на основе их типа (адрес, номер кредитной карты, ФИО), без привязки к домену. Наиболее опасной является утечка параметров кредитных карт, так как менеджеры паролей подставляют не только номер карты, но и дату окончания действия и проверочный код.

Выявивший проблему исследователь протестировал 11 браузерных дополнений с менеджерами паролей, в сумме насчитывающих 39.7 млн. активных установок, и все они оказались не защищены от подобного вида атак. Некоторые производители выпустили обновления (NordPass 5.13.24, ProtonPass 1.31.6, RoboForm 9.7.6, Dashlane 6.2531.1, Keeper 17.2.0, Enpass 6.11.6, Bitwarden 2025.8.1), в которых обходным путём попытались блокировать проведение атаки. Другие дополнения (KeePassXC-Browser, 1Password, iCloud Passwords, Enpass, LastPass, LogMeOnce) пока остаются без исправления. Для проверки проявления уязвимости в различных менеджерах паролей опубликован набор тестовых страниц.

Позиция разработчиков 1Password, не выпустивших исправление, сводится к тому, что уязвимость является фундаментальной и напрямую не связанна с конкретным браузерным дополнением, поэтому попытки её устранения на стороне дополнения лишь блокируют отдельные векторы атаки, но не устраняют саму проблему, которую нужно решать в браузере или запросом отдельного подтверждения перед автозаполением полей. Упоминается, что в 1Password уже поддерживается вывод запроса подтверждения перед автозаполнением параметров платежей и в следующем выпуске будет добавлена опция для вывода подобного запроса для всех типов автозаполняемых данных (из-за снижения удобства работы подобную опцию не будут активировать по умолчанию).

Среди предлагаемых автором исследования методов защиты упоминается отслеживание изменения стилей подставляемых на страницу элементов при помощи API MutationObserver, блокировка изменений через Shadow DOM в режиме «closed», мониторинг за выставлением прозрачности элементов, задействование API Popover для вывода диалогов, проверка наложения слоёв, временное отключение обработки событий указателя (pointer-events:none) во всех плавающих элементах во время вывода диалога менеджера пароля. При этом для полного блокирования описанного класса атак рекомендуется на уровне браузера реализовать отдельный API для защиты от кликджекинга.

В качестве универсального метода защиты в браузерах на основе движка Chromium пользователям рекомендуется включить режим подтверждения доступа дополнения к сайту (Настройки дополнения → «site access» → «on click»), при котором дополнение получает доступ к сайту только после клика на пиктограмме в правой части панели с адресной строкой. В качестве обходного пути защиты также упоминается отключение автозаполнения форм и копирование паролей вручную через буфер обмена, но при этом возникает проблема с утечкой данных из общего буфера обмена и опасность не заметить попытки фишинга.

>>> Подробности на opennet



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 5)
Ответ на: комментарий от dataman

А вся копипаста не поместилась

И да, и нет. Решил выделить (как по мне) основное в этой теме.

PunkPerson
() автор топика

Отмечается, что многие пользователи используют один менеджер паролей

Не один не использую все хранится в голове

minermoon
()

одноразовые пароли для двухфакторной аутентификации

Это не правильный перевод или авторы статьи не в теме?

mx__ ★★★★★
()
Ответ на: комментарий от PunkPerson

Вообще то одноразовые пароль генерятся списком и действуют 1 раз. Тот что в менеджере паролей не сработает 2й раз. Так понятно?

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Так понятно. Ну, либо действительно ошибка в переводе, либо здесь имеются в виду recovery codes. (На GitHub) такие выдаются при подключении TOTP (аутентификации одноразовым паролем). Может и мы чего-то не знаем…

Спасибо за замечание.

PunkPerson
() автор топика
Ответ на: комментарий от PunkPerson

Одноразовые пароли и рековери кодес это одно и тоже.

Мне трудно представить того кто этот список добавляет в менеджер паролей.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

Что-то я не пойму, тот же KeePassXC работает по конкретным доменам, т.е. если такого адреса нет в базе, он ничего подставлять не будет.

Нужно сначала взломать хороший сайт, потом подставить туда вредоносный код, а потом украсть пароль из KeePassXC?

MoldAndLimeHoney ★★
()
Ответ на: комментарий от mx__

Либо я что-то путаю, либо вы.

Я когда подвязывал Google Authenticator к аккаунту на GitHub мне предложили скачать github-recovery-codes.txt на случай если пропадëт доступ к аутентификатору, который в свою очередь выдаëт те самые одноразовые пароли.

На документации Github одноразовые пароли и recovery коды это разные вещи.

PunkPerson
() автор топика
Ответ на: комментарий от mx__

Recovery codes – это вообще про другое. Они на случай если ты потерял доступ к своему аутентификатору. Т.е. ты можешь отдельно распечатать их на листе, на всякий случай.

А одноразовые пароль генерятся каждый раз новые.

MoldAndLimeHoney ★★
()
Ответ на: комментарий от PunkPerson

Да это и есть одноразовые пароли. Выдают штук 30 готовых паролей и каждый после употребления 2й раз не работает.

mx__ ★★★★★
()
Ответ на: комментарий от kneedeep

Офигеть, он собой подменяет другой авторификатор? Да ладно.

mx__ ★★★★★
()

Вот как чувствовал - никогда не использовал эти расширения. Ничего надёжней файла Пароли.txt ещё не придумали.

vbr ★★★★★
()
Ответ на: комментарий от mx__

Recovery codes (коды восстановления) и одноразовые пароли (OTP) — не одно и то же, но связаны с разными понятиями в системах аутентификации.

Recovery codes
Recovery codes — это резервные коды, которые генерируются системой аутентификации во время первоначального процесса настройки. Они служат дополнительным уровнем защиты, когда обычный метод аутентификации (пароль или аппаратный ключ) становится недоступным или скомпрометированным.

Особенности: Обычно представляют собой случайно сгенерированные буквенно-цифровые строки. Уникальны для отдельных пользователей и их учётных записей. Каждый код можно использовать только один раз — после успешного входа он автоматически деактивируется, чтобы его нельзя было использовать повторно.

Важно: recovery codes не заменяют пароль или основной метод аутентификации, а предназначены как запасной вариант.

Одноразовые пароли
Одноразовый пароль (OTP) — это уникальный пароль, действительный только для одного сеанса входа или транзакции. В отличие от традиционных паролей, которые остаются статичными, OTP автоматически меняются каждый раз, когда они используются.

Особенности: Генерируются специальными алгоритмами, которые создают новый уникальный пароль для каждой попытки входа в систему. Даже если злоумышленник получит OTP, он будет бесполезен для будущих попыток входа в систему, поскольку потребуется новый OTP.

Важно: использование одноразовых паролей не является панацеей и должно использоваться в сочетании с другими мерами безопасности, такими как двухфакторная аутентификация, единый вход и шифрование.

Источник: Яндекс Алиса

PunkPerson
() автор топика
Ответ на: комментарий от PunkPerson

Разницы нет. И кстати рековери коды можно получить в любое время если вы в ссесии, а не только при включении двухфакторки.

Есть еще пароли приложений, но это другое.

mx__ ★★★★★
()
Ответ на: комментарий от mx__

TOTP это time-based one-time password. Есть общий секрет между сервером и клиентом. На основе этого секрета и текущего времени генерируется код, который действителен 30 секунд. У большинства сервисов используется алгоритм, описанный в RFC 6238 и для этого алгоритма существует множество клиентских реализаций, включая Bitwarden, iCloud Passwords, Aegis, Google Authenticator. Алгоритм очень простой и его можно реализовать в несколько строк, если есть библиотека нужных криптографических алгоритмов.

Кроме этих кодов, есть т.н. recovery codes (на разных сайтах называются по-разному). Когда сайт генерирует несколько одноразовых кодов и пользователь должен их сохранить у себя.

И то, и то - одноразовые коды. Для первых устоялся термин TOTP. Для вторых один термин не устоялся, хотя суть везде одинакова.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от PunkPerson

OTP автоматически меняются каждый раз, когда они используются.

Генерируются специальными алгоритмами, которые создают новый уникальный пароль для каждой попытки входа в систему. Даже если злоумышленник получит OTP, он будет бесполезен для будущих попыток входа в систему, поскольку потребуется новый OTP.

Тут немного не так. OTP код может быть использован сколько угодно раз, пока срок его действия не истечёт.

kneedeep
()
Ответ на: комментарий от vbr
  1. Этот секрет это не отмены 2х факторки, и если кто за место приложения на другом устройстве типа гугля-автрификатора заюзал для этого плагин к браузеру он ссзб.

  2. Однлразовые пароли и рековери кодес они не привязаны ко времени они исчезают после употребления и юзаются за место 2х факторки.

mx__ ★★★★★
()
Ответ на: комментарий от ncrmnt

Уязвимость проверена на работоспособность в следующих менеджерах паролей:

  • 1Password
  • Bitwarden
  • Dashlane
  • Enpass
  • Keeper
  • LastPass
  • LogMeOnce
  • NordPass
  • ProtonPass
  • RoboForm

Все они подвержены этой уязвимости.

PunkPerson
() автор топика

Ну и простыня.

Если атакующий имеет возможность выполнить свой JavaScript-код на странице, например, эксплуатировав XSS-уязвимость

Короч, смысл в том, что через XSS-уязвимость можно напихать рекламы, провоцирующую активацию менеджера паролей и передачи инфы из него в страницу через клик пользователя, спрятав показ самого интерфейса работы с менеджером паролей.

Это, прямо скажем, не самое худшее, что можно сотворить со страницей, если можно исполнять произвольный код, но интересно, да.

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 2)
Ответ на: комментарий от mx__

Этот секрет это не отмены 2х факторки, и если кто за место приложения на другом устройстве типа гугля-автрификатора заюзал для этого плагин к браузеру он ссзб.

Уверен, что 90% людей, использующих менеджеры паролей с этим функционалом, добавляют туда и TOTP. Когда это встроено прямо в ОС, называть таких людей ССЗБ - странно. Тем более, что для многих людей смартфон это основной компьютер, что такое «двухфакторная аутентификация» в таких условиях - вопрос интересный.

Однлразовые пароли и рековери кодес они не привязаны ко времени они исчезают после употребления и юзаются за место 2х факторки.

Какой-то сумбур. TOTP привязаны ко времени. Коды восстановления не привязаны. И то и то - являются одним из факторов в многофакторной системе аутентификации. Как создатели сайта настроят - так и будет.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от LamerOk

Так суть уязвимости в том, что злоумышленник может управлять подсказками браузерных расширений, которые встраиваются в страницу. А менеджеры паролей, встроенные в сам браузеры, ничего не встраивают, рисуя «нативное» браузерные окошко.

kneedeep
()
Ответ на: комментарий от LamerOk

Не совсем. Через XSS-уязвимость на сайт засылают ДРГ форму с параметром непрозначности 0.001 и через JS-код вызывают фокус на эту форму, в следствие чего триггерится менеджер паролей и подставляет туда пароль. Далее пароль уже летит хакерам.

PunkPerson
() автор топика
Ответ на: комментарий от kneedeep

менеджеры паролей, встроенные в сам браузеры, ничего не встраивают,

Видимо, всё таки встраивают. Но я сам не пользуюсь - не проверял.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Я ровно это и описал

Раз так, значит я всего лишь по-другому изложил.

PunkPerson
() автор топика

Ужасно! Придется вырубать интеграцию с KeePassXC

somemong
()
Ответ на: комментарий от kneedeep

2х факторные, как бы подрузумевают не только 2 фактора а разные устойства.

Т.е. нужно иметь другое устройство чтобы войти.

Меня всегда поражают люди заявляющие что используют 2х факторную и ставят на телефон банк-онлайн приложение.

mx__ ★★★★★
()

Если атакующий имеет возможность выполнить свой JavaScript-код на странице, например, эксплуатировав XSS-уязвимость на сайте,

Я правильно понимаю что всё намного интересней если атакующий и есть сайт?

kirill_rrr ★★★★★
()
Ответ на: комментарий от vbr

Тем более, что для многих людей смартфон это основной компьютер, что такое «двухфакторная аутентификация» в таких условиях - вопрос интересный.

Почему то это доходит мало до кого.

mx__ ★★★★★
()
Ответ на: комментарий от LamerOk

Видимо, всё таки встраивают.

В firefox не знаю, а хромые показывают свои собственные окошки поверх страницы, ничего в неё не встраивая.

kneedeep
()
Ответ на: комментарий от mx__

2х факторные, как бы подрузумевают не только 2 фактора а разные устойства.

Скорее - два разных канала связи. Но это в теории, а на практике как на практике.

LamerOk ★★★★★
()
Ответ на: комментарий от mx__

2х факторные, как бы подрузумевают не только 2 фактора а разные устойства. Т.е. нужно иметь другое устройство чтобы войти.

Подразумевается, что если у вас угнали пароль, то придётся угнать ещё и генератор TOTP кодов, симку или почту, смотря где у вас там второй фактор настроен.

kneedeep
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.