данни за нов клас атаки (Load Value Injection, ) срещу механизма на спекулативното изпълнение в CPU на Intel, които могат да се използват за извършване на изтичане на ключове и секретни данни от Intel SGX анклави и други процеси.
Новият клас атаки е основан на манипулации с същите микроархитектурни структури, както в атаките (Microarchitectural Data Sampling), . При това новите атаки не се блокират от съществуващите методи за защита срещу Meltdown, Spectre, MDS и други подобни атаки. За да се осигури ефективна защита срещу LVI, е необходимо да се направят хардуерни промени в CPU. При опит за защита по софтуерен път, чрез добавяне на LFENCE инструкция след всяка операция за зареждане от паметта и замяна на инструкцията RET с POP, LFENCE и JMP, се наблюдават твърде големи разходи — по оценка на изследователите, пълната софтуерна защита ще доведе до загуба на производителност от 2 до 19 пъти.
Отчасти, трудността при блокирането на проблема се компенсира с факта, че в момента атаката е по-скоро теоретична, отколкото практическа (атаката е теоретично възможна, но много трудна за изпълнение и reproducible само в синтетични тестове).
Компанията Intel умерен риск от опасност (5.6 от 10) и обновление на фърмуера и SDK за средата SGX, в които се опитаха да блокират извършването на атаката по обходен път. Предложените методи за атака за момента са приложими само за процесори на Intel, но не се изключва възможността LVI да бъде адаптирана и за други процесори, подложени на Meltdown атаки.
Проблемът бе открит през април миналата година от изследователя Джо Ван Балк (Jo Van Bulck) от Льовенския университет, след което с участието на 9 изследователи от други университети бяха разработени пет основни метода за извършване на атаки, всеки от които допуска съществуването на по-специфични . Независимо, през февруари тази година, изследователи от компанията Bitdefender също един от вариантите на атаката LVI и съобщи за него в Intel. Вариантите на атаките се различават по използването на различни микроархитектурни структури, като буфер за съхранение (SB, Store Buffer), буфер за попълване (LFB, Line Fill Buffer), буфер за смяна на контекста FPU и кеш от първо ниво (L1D), които по-рано бяха използвани в такива атаки като , , , , и .
Основното между LVI и атаките MDS е, че MDS манипулира определението за съдържанието на микроархитектурните структури, които остават в кеша след спекулативна обработка на изключения (fault) или операции load и store, докато
атаките LVI позволяват подмяна на данни от атакуващия в микроархитектурните структури, за да окажат влияние върху последвалото спекулативно изпълнение на кода на жертвата. Чрез посочените манипулации атакуващият може да извлече съдържанието на закрити структури от данни в други процеси при изпълнението на определен код на целевото ядро на CPU.
За в кода на процеса-жертва специфични последователности от код (гаджети), в които се зарежда контролирана от атакуващия стойност, а зареждането на тази стойност води до възникване на изключения (fault, abort или assist), които отхвърлят резултата и повторно изпълняват инструкциите. При обработката на изключението възниква спекулативен прозорец, в който се случва изтичане на обработваните в гаджета данни. В частност, процесорът започва да изпълнява спекулативно парче код (гаджет), после определя, че предсказанието не е оправдано и откатва операциите до първоначалното състояние, но обработените данни по време на спекулативното изпълнение остават в кеша L1D и микроархитектурните буфери и са достъпни за извличане от тях с използването на известни методи за определяне на остатъчни данни по странични канали.
Изключението «assist», за разлика от «fault», се обработва в процесора без извикване на софтуерни обработчици. Assist може да възникне, например, когато е необходимо да се актуализира бит A (Accessed) или D (Dirty) в таблицата за физическа памет. Основната трудност при провеждането на атака срещу други процеси е как да се иницира възникването на assist, манипулирайки жертвения процес. В момента не съществуват надеждни начини за това, но в бъдеще не е изключено да бъдат намерени. Възможността за провеждане на атака е потвърдена само за анклавите Intel SGX, останалите сценарии са теоретични или възпроизвеждаеми в синтетични условия (необходимо е добавяне на определени малки кодове в кода)
Възможни вектори на атаки:
- Изтичане на данни от структури на ядрото до потребителския процес. Съществуващата защита в ядрото на Linux срещу атаки от клас Spectre 1, както и механизмът на SMAP (Предотвратяване на достъп в режим на супервайзор) значително намаляват вероятността от атака LVI. Добавянето на допълнителна защита в ядрото може да се наложи, ако в бъдеще се открият по-прости методи за провеждане на атака LVI.
- Изтичане на данни между различни процеси. За атаката е необходимо наличието на определени фрагменти от код в приложението и определяне на метода на възникване на изключение в целевия процес.
- Изтичане на данни от хост-средата до гостуващата система. Атаката е класифицирана като твърде сложна, изискваща изпълнението на различни трудни за реализиране стъпки и предсказване на активността в системата.
- Изтичане на данни между процеси в различни гостуващи системи. Векторът на атаката е близък до организацията на изтичане на данни между различни процеси, но допълнително изисква изпълнението на сложни манипулации за заобикаляне на изолацията между гостуващите системи.
Изследователите публикуваха с демонстрация на принципите на провеждане на атака, но те все още не са подходящи за извършване на реални атаки. Първият пример позволява насочване на спекулативното изпълнение на код в жертвения процес по аналогия с възвратно-ориентирано програмиране (, Return-Oriented Programming). В този пример жертвата е специално подготвен процес, съдържащ необходимите инструменти (прилагането на атаката към реални външни процеси е затруднено). Вторият пример позволява да се намеси в изчисленията при шифроването на AES в рамките на Intel SGX и да се организира изтичане на данни по време на спекулативно изпълнение на инструкции за възстановяване на стойността на ключа, използван за шифриране.

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