Новая тэхніка эксплуатацыі ўразлівасцяў класа Spectre у Chrome

Група даследнікаў з амерыканскіх, аўстралійскіх і ізраільскіх універсітэтаў прапанавала новую тэхніку нападу па іншых каналах для эксплуатацыі ўразлівасцяў класа Spectre у браўзэрах на базе рухавічка Chromium. Атака, якая атрымала кодавае імя Spook.js, дазваляе праз запуск JavaScript-кода абыйсці механізм ізаляцыі сайтаў і прачытаць змесціва ўсёй адраснай прасторы бягучага працэсу, г.зн. атрымаць доступ да дадзеных старонак, запушчаных у іншых укладках, але апрацоўваных у адным працэсе.

Так як Chrome запускае розныя сайты ў розных працэсах, то магчымасць здзяйснення практычных нападаў абмежавана сэрвісамі, якія дазваляюць розным карыстачам размяшчаць свае старонкі. Метад дазваляе са старонкі, у якую атакавалы мае магчымасць убудаваць свой JavaScript-код, вызначыць наяўнасць іншых адчыненых карыстачом старонак з таго ж сайта і атрымаць з іх канфідэнцыйную інфармацыю, напрыклад, уліковыя дадзеныя або банкаўскія рэквізіты, падстаўленыя сістэмай аўтазапаўнення палёў у web-формах. У якасці дэманстрацыі паказана як можна атакаваць чужы блог у сэрвісе Tumblr, калі яго ўладальнік адкрые ў іншай укладцы блог зламыснікаў, размешчаны ў тым жа сэрвісе.

Іншым варыянтам ужывання метаду з'яўляецца напад на браузерные дадаткі, якая дазваляе пры ўсталёўцы дадатку, падкантрольнага атакавалым, выняць дадзеныя з іншых дадаткаў. У якасці прыкладу паказана як усталяваўшы шкоднасны дадатак можна атрымаць канфідэнцыйную інфармацыю з мэнэджара пароляў LastPass.

Даследнікамі апублікаваны прататып эксплоіта, які працуе ў Chrome 89 на сістэмах з CPUIntel 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

Дадаць каментар