Обновление системы безопасности расширения LastPass

Отчет об инциденте: 31 марта 2017 г. (20:10)

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

Большинство пользователей получат обновление автоматически. Удостоверьтесь, что используете новейшую версию (как минимум 4.1.44), которую можно в любой момент загрузить с веб-сайта https://www.lastpass.com/.

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

Обзор

  • В расширениях LastPass для браузеров была выявлена уязвимость на стороне клиентского ПО, которую можно было использовать для кражи данных и манипулирования расширением LastPass.
  • Чтобы воспользоваться уязвимостью, злоумышленник должен был заманить пользователя на вредоносный сайт (с помощью фишинга, направленного фишинга или другой атаки) либо на доверенный сайт, на котором демонстрируется вредоносная реклама.
    • Для этого потребовалось бы выполнить целенаправленную атаку на конкретного пользователя через его локальный браузер.
  • Все расширения сейчас исправлены, и обновления отправлены в соответствующие магазины расширений.
    • Выявленная уязвимость не относится к нашим приложениям для мобильных устройств с Android и iOS.
  • Все расширения LastPass для браузеров необходимо обновить до версии не ниже 4.1.44.
    • Проверьте номер версии, выбрав значок расширения LastPass и пункты «Больше опций» > «О приложении LastPass».
    • У большинства пользователей обновления будут установлены автоматически, но новейшие версии всегда можно загрузить с веб-сайта https://www.lastpass.com/.
    • Для установки обновленной версии удалять имеющуюся не требуется.

Анализ произошедшего

Отчет об уязвимости

Уязвимость в расширениях LastPass для браузеров на стороне клиентского ПО была связана с работой LastPass в «изолированных мирах». В отчете сказано следующее: «Изолированный мир — это среда выполнения JavaScript, использующая одну и ту же DOM (объектную модель документа) с другими мирами, но такие элементы как переменные и функции при этом не являются общими. Без изолированных миров непривилегированные страницы могли бы вмешиваться в работу скриптов с более высокими привилегиями и заставлять их выполнять произвольные действия». В случае использования бинарной версии расширения (которая установлена менее чем у 10% пользователей LastPass) им можно было бы манипулировать для удаленного выполнения кода (RCE) в расширении.

 Изолированные миры и доверенные страницы

Работа LastPass в значительной мере построена на использовании контент-скриптов. Контент-скрипты — это фрагменты кода JavaScript, которые мы внедряем на сторонние сайты для считывания и автоматического заполнения учетных данных. Именно они позволяют сделать приложение LastPass таким полезным. В свою очередь, контент-скрипт обменивается данными с остальным кодом расширения, который выполняет основную работу: расшифровку сохраненных учетных данных, обновление данных в хранилище и т.п. Остальной код расширения совершенно недоступен сторонним сайтам и не должен влиять на работу контент-скриптов.

Контент-скрипты обычно отделяются от остального содержимого сайта с помощью так называемых «изолированных миров». Благодаря изолированным мирам наши контент-скрипты могут считывать содержимое DOM стороннего сайта, но не имеют доступа к внутренним функциям и переменным JavaScript. Верно и обратное: сторонний сайт не может вызывать какие-либо функции и не имеет доступа к переменным в контент-скриптах. Это разделение должно обезопасить обе стороны от внешних манипуляций.

В некоторых случаях эти переменные могут влиять на логику работы контент-скрипта. С помощью такой техники сложно внедрить произвольные значения в код JavaScript. Однако с помощью особенно изощренного приема в отчете было продемонстрировано, что можно внедрить произвольные строки. Причем одной из таких строк было достаточно для того, чтобы заставить расширение считать, что оно выполняется на сайте lastpass.com. Сделав это, злоумышленник мог бы манипулировать расширением LastPass, чтобы раскрыть данные конкретного пользователя, а в случае использования бинарной версии — запустить произвольный код.

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

Устранение проблемы

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

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

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

Мы работали в сотрудничестве с командой Google Project Zero, чтобы удостовериться в полноте наших исправлений. Когда было готово исправление для всех затронутых уязвимостью расширений, мы отправили их на проверку во все магазины расширений и оперативно опубликовали для пользователей. Мы выражаем благодарность нашим партнерам в компаниях Apple, Google, Microsoft, Mozilla, Opera, Yandex и других организациях, которые ускорили проверку и выпуск нашего расширения.

Перспективы на будущее

Мы настоятельно рекомендуем разработчика расширений удостовериться в отсутствии аналогичной уязвимости в своем коде.

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

Чтобы поддержать максимальный уровень безопасности, мы продолжим сотрудничать с этичными исследователями и будем стимулировать участие в нашей программе премирования за выявленные ошибки (https://bugcrowd.com/lastpass). Следите за новостями об этом.

Спасибо!

Команда LastPass

____________________________________________________________________________________________________________________________

27 марта 2017 г. (19:10)

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

Тем временем мы хотим поблагодарить таких людей, как Тэвис, которые помогают нам поднимать планку онлайновой безопасности LastPass и сотрудничают с нашими специалистами для дальнейшего совершенствования LastPass в качестве самого безопасного диспетчера паролей на сегодняшний день. Нашим пользователям мы хотим порекомендовать несколько мер, которые помогут дополнительно обезопасить себя от подобных проблем с клиентским ПО.

  1. Открывайте сайты из хранилища LastPass – запускайте сайты непосредственно из хранилища LastPass. До тех пор, пока не будет устранена выявленная уязвимость, это наиболее безопасный способ доступа к учетным данным и сайтам.
  2. Используйте двухфакторную аутентификацию на всех сайтах, поддерживающих ее, — по возможности включайте в учетных записях двухфакторную аутентификацию. Многие веб-сайты сейчас предлагают эту функцию для повышения безопасности.
  3. Остерегайтесь фишинговых атак — будьте бдительны, чтобы не стать жертвой попыток фишинга. Не переходите по ссылкам, полученным от незнакомцев, а также по странным ссылкам от проверенных контактов и компаний. Ознакомьтесь с нашими рекомендациями по предотвращению фишинг-атак.

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