Spook.js, нова техника за използване на уязвимости на Spectre в Chrome

Група изследователи от американски, австралийски и израелски университети съобщиха за това описа нова техника на атака което позволява да се използват уязвимости Клас Spectre в браузъри, работещи с Chromium.

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

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

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

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

За да се предпазят от атаки, свързани със спекулативно изпълнение на инструкции през браузъра, сегментирането на адресното пространство е внедрено в Chrome: изолацията на пясъчника позволява JavaScript да работи само с 32-битови указатели и споделя паметта на контролера в не припокриващи се 4 GB стекове.

За да организират достъпа до цялото адресно пространство на процеса и да избегнат 32-битовото ограничение, изследователите използваха техниката на объркване на типа, която позволява на JavaScript двигателя да обработва обект с грешен тип, което прави възможно формирането на 64-битов код, базиран на комбинация от две 32-битови стойности.

Същността на атаката е, че чрез обработка на специално създаден злонамерен обект в двигателя на JavaScript се създават условия, които водят до спекулативно изпълнение на инструкции, които имат достъп до масива. Обектът е избран по такъв начин, че полетата, контролирани от нападателите, се поставят в областта, където се използва 64-битовият показалец.

Тъй като видът на злонамерен обект не съответства на типа масив, който се обработва, при нормални условия такива действия се блокират в Chrome чрез механизма за деоптимизация на кода, използван за достъп до масивите. За да се реши този проблем, кодът за атака тип Confusion се поставя в условен блок "if", който не се задейства при нормални условия, но работи в спекулативен режим, ако процесорът неправилно предвижда повече клонове.

В резултат на това процесорът спекулативно осъществява достъп до генерирания 64-битов указател и връща състоянието след определяне на неуспешното предсказване, но следите за изпълнение се задават в споделения кеш и могат да бъдат възстановени с помощта на методи за определяне на съдържанието на кеша чрез трети- парти канали, анализирайки промяната във времето за достъп до кеширани и некеширани данни.

За да се анализира съдържанието на кеша в условията на недостатъчна точност на таймера, наличен в JavaScript, се използва метод, предложен от Google, който подвежда стратегията за изхвърляне на кеш данни на Tree-PLRU, използвана в процесорите и позволява чрез увеличаване на броя цикли да значително увеличаване на времевата разлика в наличието и отсъствието на стойност в кеша.

Изследователите пуснаха прототип на експлоатация, който работи в Chrome 89 en системи с Intel i7-6700K и i7-7600U. Експлоатацията е създадена с помощта на прототипи на JavaScript код, публикуван по -рано от Google за извършване на Spectre атаки.

Накрая изследователите споменават това успя да подготви работни експлойти за системи, базирани на процесори Intel и Apple M1, на които се дава възможност да организират отчитането на паметта със скорост 500 байта в секунда и точност от 96%. Предполага се, че методът е приложим за AMD процесори, но не беше възможно да се подготви напълно функционален експлойт.

Fuente: https://www.spookjs.com