Нов метод за използване на уязвимостите от клас Spectre в браузъра Chrome

2
544

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

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

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

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

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

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

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

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

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

Да напомним, че класическата атака Spectre се осъществява чрез презаписване на указателите на някои функции и адресите на връщане. По този начин става възможно да се промени приоритета на процесите на централния процесор и да се прочете паметта, която би трябвало да е добре защитена от подобен достъп. Тази уязвимост позволява и презаписване значението на ключови променливи, а оттук – процесорът може да бъде накаран да направи повече итерации и да се получи класическо препълване на буфера.

5 3 гласа
Оценете статията
Абонирай се
Извести ме за
guest
2 Коментара
стари
нови оценка
Отзиви
Всички коментари