Нова техника за експлоатация на уязвимости от клас Spectre в Chrome

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

Тъй като Chrome стартира различни сайтове в различни процеси, възможността за извършване на практически атаки е ограничена до услуги, които позволяват на различни потребители да хостват своите страници. Методът позволява от страницата, в която атакуващият може да внедри своя JavaScript код, да определи наличието на други отворени от потребителя страници от същия сайт и да извлече от тях конфиденциална информация, например, данни за вход или банкови реквизити, подставени от системата за автоматично попълване на полета във уеб формите. Като демонстрация е показано как може да се атакува чужд блог в услугата Tumblr, ако неговият собственик отвори в друг таб блога на злонамерените, хостван в същата услуга.

Пуснете видеото

Друг вариант на прилагане на метода е атаката срещу браузърни разширения, която, когато се инсталира разширение, контролирано от атакуващите, позволява извличане на данни от други разширения. Като пример е показано как, чрез инсталиране на злонамерено разширение, може да се извлече конфиденциална информация от мениджъра на пароли LastPass.

Пуснете видеото

Изследователите публикуваха прототип на експлоит, работещ в Chrome 89 на системи с CPU Intel 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 и позволява чрез увеличаване на броя на цикли значително да увеличи разликата във времето при наличие и отсъствие на стойността в кеша.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster