Google демонстрира експлоатация на уязвимости на Spectre, използвайки JavaScript в браузър

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

Експлойтите могат да се използват за получаване на достъп до паметта на процес , който обработва уеб съдържание в текущия раздел. За да се тества функционалността на експлойта, е стартиран уебсайтът на изтеклата страница и кодът, описващ логиката на операцията, е публикуван в GitHub.

Предложеният прототип е предназначен за атакуване на системи с процесори Intel Core i7-6500U в среда с Linux и Chrome 88, въпреки че това не изключва възможността за извършване на промени, за да се използва експлойтът в други среди.

Методът на действие не е специфичен за процесорите на Intel : след подходяща адаптация беше потвърдено, че експлойтът работи на системи с процесори от други производители, включително Apple M1, базиран на ARM архитектурата. След малки корекции, експлойтът работи и на други операционни системи и други браузъри, базирани на Chromium engine.

В среда, базирана на стандартни процесори Chrome 88 и Intel Skylake, постигнахме изтичане на данни от процеса, отговорен за рендиране на уеб съдържание в текущия раздел на Chrome (процес на рендиране) със скорост от 1 килобайт в секунда. В допълнение бяха разработени алтернативни прототипи, например експлойт, който позволява, с цената на намалена стабилност, да увеличи скоростта на изтичане до 8kB / s при използване на таймера за изпълнение.now () с точност от 5 микросекунди (0.005 милисекунди) ). Също така беше подготвен вариант, който работи с таймер с точност от една милисекунда, който може да се използва за организиране на достъп до паметта на друг процес със скорост от около 60 байта в секунда.

Публикуваният демо код се състои от три части:

  • Първата част калибрирайте таймера, за да изчислите времето за работа на операциите, необходими за извличане на данните, които остават в кеша на процесора в резултат на спекулативното изпълнение на инструкциите на процесора.
  • Втората част Определя оформлението на паметта, използвано при разпределяне на масива на JavaScript.
  • Третата част директно използва уязвимостта на Spectre, за да определи съдържанието на паметта на текущия процес в резултат на създаването на условия за спекулативно изпълнение на определени операции, резултатът от които се изхвърля от процесора след определяне на неуспешна прогноза, но следите от изпълнението се уреждат в споделения кеш и могат да бъдат възстановени с помощта на методи за определяне на съдържанието на кеша, използвайки канали на трети страни, които анализират промяната във времето за достъп до кеширани и некеширани данни.

Предложената техника за експлоатация позволява да се откажат от високопрецизните таймери, достъпни чрез performance.now() API, и без поддръжка за типа SharedArrayBuffer, което позволява създаването на масиви в споделена памет.

Експлойтът включва устройството Spectre, което причинява контролирано изпълнение на спекулативен код, и анализатор на изтичане на страничен канал, който определя кои данни са кеширани по време на спекулативно изпълнение.

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

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

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

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

Източник: https://security.googleblog.com


Добавяне като предпочитан източник в Google