LVI е нова класа на напади на механизмот за шпекулативно извршување во процесорот

јавно објавено информации за нова класа на напади LVI (Вбризгување со вредност на оптоварување, CVE-2020-0551) за шпекулативниот механизам за извршување во процесорите на Intel, кој може да се користи за протекување клучеви и тајни податоци од енклавите на Intel SGX и други процеси.

Нова класа на напади се заснова на манипулација со истите микроархитектонски структури кои се користат во нападите MDS (Микроархитектонски примерок на податоци), Spectre и Meltdown. Во исто време, новите напади не се блокирани со постоечките методи за заштита од Meltdown, Spectre, MDS и други слични напади. Ефективната заштита на LVI бара хардверски промени на процесорот. При програмски организирање на заштитата, со додавање на инструкцијата LFENCE од страна на компајлерот по секоја операција на вчитување од меморијата и замена на инструкцијата RET со POP, LFENCE и JMP, се запишуваат премногу трошоци - според истражувачите, целосната заштита на софтверот ќе доведе до намалување на перформанси од 2-19 пати.

Дел од тешкотијата во блокирањето на проблемот се компензира со фактот дека нападот во моментов е повеќе теоретски отколку практичен (нападот е теоретски можен, но многу тежок за имплементација и може да се репродуцира само во синтетички тестови).
Интел присвоени проблемот има умерено ниво на опасност (5.6 од 10) и ослободен ажурирање на фирмверот и SDK за околината SGX, во која се обиде да го блокира нападот користејќи заобиколен начин. Предложените методи за напад моментално се применливи само за процесорите на Intel, но не може да се исклучи можноста за прилагодување на LVI за други процесори на кои се применуваат напади од класата Meltdown.

Проблемот беше идентификуван минатиот април од страна на истражувачот Џо Ван Булк од Универзитетот во Лувен, по што, со учество на 9 истражувачи од други универзитети, беа развиени пет основни методи за напад, од кои секоја овозможува постоење на поспецифични опции. Независно, во февруари оваа година, истражувачите од Bitdefender исто така откриени една од варијантите за напад на LVI и ја пријави во Интел. Варијантите на нападот се разликуваат по употребата на различни микроархитектонски структури, како што е тампон за складирање (SB, Store Buffer), бафер за полнење (LFB, Line Fill Buffer), тампон на контекстуален прекинувач FPU и кеш од прво ниво (L1D), претходно користен во напади како што се ZombieLoad, РИДЛ, Последици, LazyFP, Предвидување и Криза.

LVI е нова класа на напади на механизмот за шпекулативно извршување во процесорот

Главната почести LVI против нападите на MDS е тоа што MDS манипулира со одредувањето на содржината на микроархитектонските структури кои остануваат во кешот по шпекулативно справување со дефекти или операции за вчитување и складирање, додека
LVI нападите дозволуваат податоците на напаѓачот да се вметнат во микроархитектонските структури за да се влијае на последователно шпекулативно извршување на кодот на жртвата. Користејќи ги овие манипулации, напаѓачот може да ја извлече содржината на приватни структури на податоци во други процеси при извршување на одреден код на целното јадро на процесорот.

LVI е нова класа на напади на механизмот за шпекулативно извршување во процесорот

За проблем со експлоатација во кодот на процесот на жртвата треба да се сретнат специјални секвенци на код (гаџети) во кои е вчитана вредност контролирана од напаѓачот, а вчитувањето на оваа вредност предизвикува исклучоци (дефект, прекин или помош) да се исфрлат, отфрлајќи го резултатот и повторно извршување на инструкцијата. Кога се обработува исклучок, се појавува шпекулативен прозорец за време на кој протекуваат податоците обработени во гаџетот. Конкретно, процесорот започнува да извршува дел од кодот (гаџет) во шпекулативен режим, потоа утврдува дека предвидувањето не е оправдано и ги враќа операциите во нивната првобитна состојба, но податоците обработени за време на шпекулативното извршување се депонираат во кешот L1D и микроархитектонски бафери и е достапен за преземање од нив со користење на познати методи за одредување на преостанати податоци преку канали од трети страни.

Исклучокот „помош“, за разлика од исклучокот „дефект“, процесорот го ракува внатрешно без повикување на ракувачи на софтвер. Помош може да се појави, на пример, кога треба да се ажурира битот A (Пристапено) или D (Валкано) во табелата на мемориските страници. Главната тешкотија во извршувањето на напад на други процеси е како да се иницира појавата на помош преку манипулирање со процесот на жртвата. Во моментов нема сигурни начини за тоа, но можно е тие да се најдат во иднина. Можноста за извршување напад досега е потврдена само за Intel SGX енклавите, другите сценарија се теоретски или се репродуцираат во синтетички услови (потребно е додавање на одредени гаџети во кодот)

LVI е нова класа на напади на механизмот за шпекулативно извршување во процесорот

LVI е нова класа на напади на механизмот за шпекулативно извршување во процесорот

Можни вектори на напад:

  • Истекување на податоци од структурите на јадрото во процес на ниво на корисник. Заштитата на кернелот на Linux од нападите Spectre 1, како и механизмот за заштита SMAP (Supervisor Mode Access Prevention) значително ја намалуваат веројатноста за напад на LVI. Додавањето дополнителна заштита на кернелот може да биде неопходно доколку во иднина се идентификуваат поедноставни методи за напад на LVI.
  • Протекување податоци помеѓу различни процеси. Нападот бара присуство на одредени парчиња код во апликацијата и дефинирање на метод за фрлање исклучок во целниот процес.
  • Протекување податоци од околината на домаќинот до системот за гости. Нападот е класифициран како премногу сложен, кој бара различни тешки чекори за спроведување и предвидувања на активноста во системот.
  • Протекување податоци помеѓу процесите во различни системи за гости. Векторот за напад е блиску до организирање на истекување на податоци помеѓу различни процеси, но дополнително бара сложени манипулации за да се заобиколи изолацијата помеѓу гостинските системи.

Објавено од истражувачи некои прототипови со демонстрација на принципите на извршување на напад, но тие се уште не се погодни за извршување на вистински напади. Првиот пример ви овозможува да го пренасочите извршувањето на шпекулативниот код во процесот на жртвата, слично на програмирањето насочено кон враќање (ROP,Програмирање ориентирано кон враќање). Во овој пример, жртвата е специјално подготвен процес кој ги содржи потребните гаџети (тешко е да се примени напад врз процеси на реални трети лица). Вториот пример ни овозможува да се вклучиме во пресметките за време на шифрирањето AES во енклавата Intel SGX и да организираме истекување на податоци за време на шпекулативното извршување на инструкциите за да ја вратиме вредноста на клучот што се користи за шифрирање.


Извор: opennet.ru

Додадете коментар