Представлена новая атака для обхода изоляции сайтов в Chrome

Discussion in 'Мировые новости. Обсуждения.' started by seostock, 13 Sep 2021.

  1. seostock

    seostock Elder - Старейшина

    Joined:
    2 Jul 2010
    Messages:
    2,653
    Likes Received:
    6,524
    Reputations:
    51
    Spook.js – атака на базе JavaScript, направленная на обход реализованных Google механизмов защиты от уязвимостей Spectre.

    Новая Spectre-подобная атака по сторонним каналам на современные процессоры позволяет успешно обходить изоляцию сайтов (функцию безопасности, реализованную в Google Chrome и других браузерах на базе Chromium) и похищать чувствительные данные.

    Атака, получившая название Spook.js, была разработана группой ученых Мичиганского университета, Технологического института Джорджии (США), Университета Аделаиды (Австралия) и Тель-Авивского университета (Израиль).

    Spook.js представляет собой метод атаки на базе JavaScript, специально направленный на обход механизмов защиты, реализованных Google после обнаружения уязвимостей Spectre и Meltdown в январе 2018 года. Эти механизмы предотвращают потенциальные утечки, гарантируя, что контент разных доменов не будет совместно использоваться в одном и том же адресном пространстве.

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

    Spectre (CVE-2017-5753 и CVE-2017-5715) – название класса аппаратных уязвимостей в центральных процессорах, «ломающего» изоляцию между приложениями. Уязвимости позволяют злоумышленникам заставлять программу получать доступ к произвольным участкам, связанным с выделенной ей областью памяти, читать содержимое этих участков памяти и потенциально похищать чувствительные данные.

    В июле 2018 года компания Google реализовала в Chrome программные контрмеры для защиты от атак Spectre в виде изоляции сайтов. С включенной изоляцией сайтов Chrome 67 и более поздние версии загружают каждый сайт в своем отдельном процессе и тем самым предотвращают атаки между процессами, а значит, и между сайтами.

    Однако недавно специалисты обнаружили сценарии, при которых изоляция сайтов не разделяет два сайта и делает возможной Spectre-подобную атаку Spook.js, позволяющую похищать данные из Chrome и других браузеров на базе Chromium, запущенных на компьютерах с процессорами Intel, AMD и Apple M1.

    «Chrome разделяет 'example.com' и 'example.net', поскольку у них разные домены верхнего уровня, то же самое происходит с 'example.com' и 'attacker.com.' Однако 'attacker.example.com' и 'corporate.example.com' позволено иметь один процесс, благодаря чему страницы сайта 'attacker.example.com' потенциально могут извлекать информацию из страниц сайта 'corporate.example.com'», - сообщили исследователи.

    В ответ на исследование в июле 2021 года команда безопасности Chrome расширила изоляцию сайтов таким образом, чтобы «расширения больше не могли иметь общие процессы». Новая настройка Strict Extension Isolation активирована в Chrome 92 и более поздних версиях.

    https://www.securitylab.ru/news/524372.php
     
    Suicide, Spinus and Baskin-Robbins like this.
  2. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,484
    Likes Received:
    7,075
    Reputations:
    693
    Новая техника эксплуатации уязвимостей класса Spectre в Chrome

    Группа исследователей из американских, австралийских и израильских университетов предложила новую технику атаки по сторонним каналам для эксплуатации уязвимостей класса Spectre в браузерах на базе движка Chromium. Атака, которая получила кодовое имя Spook.js, позволяет через запуск JavaScript-кода обойти механизм изоляции сайтов и прочитать содержимое всего адресного пространства текущего процесса, т.е. получить доступ к данным страниц, запущенных в других вкладках, но обрабатываемых в одном процессе.

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



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



    Исследователями опубликован прототип эксплоита, работающий в Chrome 89 на системах с CPUIntel i7-6700K и i7-7600U. При создании эксплоита использованы ранее опубликованные компанией Google прототипы JavaScript-кода для совершения атак класса Spectre. Отмечается, что исследователям удалось подготовить рабочие эксплоиты для систем на базе процессоров Intel и Apple M1, которые даются возможность организовать чтение памяти со скоростью 500 байт в секунду и точностью 96%. Предполагается, что метод применим и для процессоров AMD, но полностью работоспособный эксплоит подготовить не удалось.

    Атака применима к любым браузерам на базе движка Chromium, включая Google Chrome, Microsoft Edge и Brave. Исследователи также полагают, что метод можно адаптировать для работы с Firefox, но так как движок Firefox сильно отличается от Chrome, то работа по созданию подобного эксплоита оставлена на будущее.

    Для защиты от осуществления через браузер атак, связанных со спекулятивным выполнением инструкций, в Chrome реализовано сегментирование адресного пространства - sandbox-изоляция допускает работу JavaScript только с 32-разрядными указателями и разделяет память обработчиков в непересекающихся 4ГБ кучах (heap). Для организации доступа к всему адресному пространству процесса и обхода 32-разрядного ограничения исследователи задействовали технику Type Confusion, позволяющую вынудить JavaScript-движок обработать объект с некорректным типом, что даёт возможность сформировать 64-разрядный указатель на основе комбинации из двух 32-разрядных значений.

    Суть атаки в том, что при обработке специально оформленного вредоносного объекта в JavaScript-движке создаются условия, приводящие к спекулятивному исполнению инструкций, осуществляющих доступ к массиву. Объект подбирается таким образом, что контролируемые атакующими поля размещаются в области, где используется 64-разрядный указатель. Так как тип вредоносного объекта не соответствует типу обрабатываемого массива, в обычных условиях подобные действия блокируется в Chrome механизмом деоптимизации кода, применяемого для доступа к массивам. Для решения данной проблемы код для атаки Type Confusion выносится в условный блок "if", который не активируется при обычных условиях, но выполняется в спекулятивном режиме, при неверном предсказании процессором дальнейшего ветвления.

    В итоге процессор спекулятивно обращается к сформированному 64-разрядному указателю и откатывает состояние после определения неудачного прогноза, но следы выполнения оседают в общем кэше и могут быть восстановлены при помощи методов определения содержимого кэша по сторонним каналам, анализирующих изменение времени доступа к прокэшированным и не прокэшированным данным. Для анализа содержимого кэша в условиях недостаточной точности таймера, доступного в JavaScript, применяется предложенный Google метод, обманывающий применяемую в процессорах стратегию вытеснения данных из кэша Tree-PLRU и позволяющий за счёт увеличения числа циклов значительно увеличить разницу во времени при наличии и отсутствии значения в кэше.

     
    Rhino77, seostock and Baskin-Robbins like this.
Loading...