Этот блог посвящен недавно обнаруженной проблеме безопасности с расширением браузера LastPass, обнаруженной Тэвисом Орманди из команды Google Project Zero. В этом сообщении описываются технические подробности проблемы, что злоумышленники могут с ней делать и должны ли вы, как пользователь, беспокоиться об этой проблеме или нет.

Задний план

16 сентября Тэвис Орманди из команды Google Project Zero написал в Твиттере следующее:

Https://twitter.com/taviso/status/1173401754257375232

Отчет об ошибке находится по адресу https://bugs.chromium.org/p/project-zero/issues/detail?id=1930, в котором подробно описана ошибка в расширении браузера LastPass, которая могла привести к утечке последних использованных учетных данных из-за внутренней кеш не обновляется при изменении вкладки.

Технический осмотр

Когда домен, сохраненный в LastPass, просматривается с включенным расширением, LastPass может создать всплывающее окно при нажатии значка «…», предварительно заполненного учетными данными, принадлежащими этому домену.

Это достигается вызовом функции do_popupregister() в popupfilltab_bg.js (строка 378, предварительно задана). Полный URL-адрес вкладки браузера, в которой LastPass использовался для ввода пароля, хранится в переменной с именем g_popup_url_by_tabid.

Проблема, согласно отчету об ошибке, возникает, когда popupfilltab.html из LastPass загружается в iframe через обработчик для просмотра страниц расширений (например, через moz-extension, ms-browser-extension, chrome-extension и т. Д.) В качестве веб-ресурса. . Когда всплывающая страница загружается в iframe, вызывается функция frame_and_topdoc_has_same_domain() из LastPass 'background.js (строка 7801, предварительно заданная), чтобы проверить, имеют ли верхний домен и iframe одно и то же происхождение. Эта функция вызывает ftd_get_frameparenturl() (строка 7811, предварительно определенная), которая использует кешированное значение в g_popup_url_by_tabid, поскольку всплывающая страница была загружена непосредственно как iframe, а не через вызов do_popupregister().

Чтобы воспроизвести эту проблему, вы можете использовать шаги, указанные в отчете об ошибке, или использовать следующие упрощенные шаги, чтобы увидеть ошибку в действии.

  1. Убедитесь, что у вас установлен LastPass менее 4.33.0. Скриншоты ниже относятся к LastPass версии 4.32.0. Вы можете сделать это, щелкнув значок LastPass ›Дополнительные параметры› О LastPass. Идентификатор расширения: hkbmeeengepdopgafeafeddkhnceohhp.
  2. Перейдите к https://accounts.google.com и щелкните значок "..."
  3. Вместо того, чтобы вводить учетные данные, на той же вкладке перейдите к https://x41.co/lastpassdemo.html. На этой странице используется тот же JavaScript, что и Тэвис для создания iframe в документе.
  4. Обратите внимание на свои учетные данные в этом окне

Кроме того, в отчете об ошибке также упоминается, что с этим PoC учетные данные нельзя украсть с помощью кликджекинга или путем обмана пользователя для копирования учетных данных, как будет показано приглашение, подобное приведенному ниже.

Это связано с тем, что функция frame_and_topdoc_has_same_domain() возвращает false в background.js (строка 7801, предварительно задана), поскольку значение compare_tlds(lp_gettld_url(a), lp_gettld_url(t)) в этой функции ложно. Кроме того, можно обойти подсказку и выполнить успешную атаку кликджекинга без подсказки, используя сайт, который позволяет вставлять фреймы на ненадежную страницу, например https://translate.google.com/translate?sl=auto&tl=en&u=https. : //x41.co/lastpassdemo.html

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

Я должен беспокоиться?

Короткий ответ, не совсем. Длинный ответ, возможно, если вы не будете осторожны со своими привычками просмотра и не обновили расширение LastPass до фиксированной версии 4.33.0.

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

  1. Установите уязвимую версию расширения LastPass.
  2. Войдите в LastPass
  3. Должен быть нажат 3 значка «…» в домене, учетные данные которого присутствуют в LastPass.
  4. Необходимо нажать на другую ссылку, которой злоумышленник поделился с пользователем.
  5. Необходимо выполнить дополнительное действие, например, щелчок мышью + мышь. Щелкните ОК при появлении предупреждения / нажмите Enter ИЛИ
  6. Необходимо выполнить дополнительное действие, например два щелчка в двух разных местах на странице, а затем нажать Ctrl + V (Вставить).

Последние два шага имитируют действия, которые вы должны предпринять (6) для заполнения формы учетными данными и (7) щелкните значок гаечного ключа, затем выберите «Копировать пароль» и затем вставьте его в поле ввода, контролируемое злоумышленником.

Более того, эта проблема была исправлена ​​до того, как ошибка была обнародована и был выпущен тестовый код концепции. Перезагрузите браузеры, чтобы новая версия расширения установилась автоматически.

Заключительные мысли

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

Независимо от обсуждаемой здесь проблемы безопасности, всегда полезно практиковать базовую гигиену безопасности, например, не иметь простых паролей, не использовать повторно пароли на разных сайтах и ​​использовать другой браузер или режим приватного / инкогнито при просмотре веб-сайтов, которым вы не доверяете. .

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