Група даследчыкаў з Грацкага тэхнічнага ўніверсітэта (Аўстрыя) і Цэнтра Гельмгольца па інфармацыйнай бяспецы (CISPA),
Атака Foreshadow карыстаецца тым, што пры доступе да памяці па віртуальным адрасе, які прыводзіць да выключэння (terminal page fault), працэсар спекулятыўна разлічвае фізічны адрас і загружае дадзеныя, калі яны маюцца ў L1-кэшы. Спекулятыўны зварот выконваецца да завяршэння перабору табліцы старонак памяці і незалежна ад стану запісу ў табліцы старонак памяці (PTE), г.зн. да праверкі наяўнасці дадзеных у фізічнай памяці і іх даступнасці для чытання. Пасля завяршэння праверкі даступнасці памяці, у выпадку адсутнасці сцяга Present у PTE аперацыя адкідваецца, але дадзеныя асядаюць у кэшы і іх можна атрымаць пры дапамозе метадаў вызначэння змесціва кэша па іншых каналах (праз аналіз змены часу доступу да пракэшаваных і не пракэшаваных дадзеных).
Даследнікі паказалі, што існуючыя метады абароны ад Foreshadow неэфектыўныя і рэалізаваны з няслушнай трактоўкай праблемы. Уразлівасць
Foreshadow можа быць эксплуатаваная незалежна ад ужывання ў ядры механізмаў абароны, якія раней лічыліся дастатковымі. У выніку даследнікамі была прадэманстравана магчымасць здзяйснення нападу Foreshadow у сістэмах з адносна старымі ядрамі, у якіх уключаны ўсе наяўныя рэжымы абароны ад Foreshadow, а таксама з новымі ядрамі, у якіх адключаная толькі абарона ад Spectre-v2 (выкарыстоўваецца опцыя ядра Linux nospectre_v2).
Было выяўлена, што
папераджальнай загрузкі падчас доступу да памяці, а ўзнікае пры спекулятыўным разнаймення рэгістраў прасторы карыстача ў ядры. Падобнае няправільнае тлумачэнне прычыны ўзнікнення ўразлівасці першапачаткова прывяло да здагадкі, што ўцечка дадзеных у Foreshadow можа адбыцца толькі праз кэш L1, у той час як наяўнасць у ядры вызначаных урыўкаў кода (prefetch-гаджэтаў) можа спрыяць уцечцы дадзеных па-за L1-кэшам. кэш L3.
Выяўленая асаблівасць таксама адкрывае магчымасці па стварэнні новых нападаў, накіраваных на працэсы трансляцыі віртуальных адрасоў у фізічныя ў ізаляваных асяродках і вызначэнне адрасоў і дадзеных, захаваных у рэгістрах CPU. У якасці дэманстрацый даследнікі паказалі магчымасць выкарыстання выяўленага эфекту для вымання дадзеных з аднаго працэсу ў іншы з прадукцыйнасцю каля 10 біт у секунду на сістэме з CPU Intel Core i7-6500U CPU. Таксама паказана магчымасць уцечкі змесціва рэгістраў з анклава Intel SGX (на вызначэнне 32-разраднага значэння, запісанага ў 64-разрадны рэгістр сышло 15 хвілін). Некаторыя віды нападаў аказалася магчымым рэалізаваць на JavaScript і WebAssembly, напрыклад, атрымалася вызначыць фізічны адрас JavaScript-пераменнай і запоўніць 64-разрадныя рэгістры значэннем, кантраляваным атакавалым.
Для блакавання нападу Foreshadow праз кэш L3 эфектыўны метад абароны Spectre-BTB (Branch Target Buffer), рэалізаваны ў наборы патчаў retpoline. Такім чынам, даследнікі лічаць неабходным пакіданне retpoline уключаным нават на сістэмах з новымі CPU, у якіх ужо маецца абарона ад вядомых уразлівасцяў у механізме спекулятыўнага выканання інструкцый CPU. Пры гэтым прадстаўнікі Intel заявілі, што не плануюць дадаваць у працэсары дадатковыя меры абароны ад Foreshadow і лічаць дастатковым уключэнні абароны ад нападаў Spectre V2 і L1TF (Foreshadow).
Крыніца: opennet.ru