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

Проектот Grsecurity објави детали и демонстрација на методот на напад за нова ранливост (CVE-2021-26341) во AMD процесорите поврзани со шпекулативно извршување на инструкции по безусловни операции напред. Ако нападот е успешен, ранливоста дозволува да се одреди содржината на произволните мемориски области. На пример, истражувачите подготвија експлоат кој им овозможува да го одредат распоредот на адреси и да го заобиколат механизмот за заштита KASLR (рандомизација на меморијата на кернелот) со извршување на непривилегиран код во потсистемот на јадрото ePBF. Не може да се исклучат други сценарија за напад што би можеле да доведат до протекување на содржината на меморијата на кернелот.

Ранливоста ви овозможува да создадете услови под кои процесорот, за време на превентивното извршување, шпекулативно ја обработува инструкцијата веднаш по инструкцијата за скок во меморијата (SLS, Straight Line Speculation). Покрај тоа, таквата оптимизација работи не само за операторите со условен скок, туку и за инструкциите што подразбираат директен безусловен скок, како што се JMP, RET и CALL. Следејќи ги инструкциите за безусловен скок, може да се стават произволни податоци што не се наменети за извршување. Откако ќе се утврди дека гранката не вклучува извршување на следната инструкција, процесорот едноставно ја враќа состојбата наназад и го игнорира шпекулативното извршување, но трагата од извршувањето на инструкцијата останува во споделената кеш меморија и е достапна за анализа со помош на техники за пронаоѓање странични канали.

Како и со искористувањето на ранливоста Specter-v1, нападот бара присуство на одредени секвенци на инструкции (гаџети) во кернелот што водат до шпекулативно извршување. Блокирањето на ранливоста во овој случај се сведува на идентификување на такви гаџети во кодот и додавање дополнителни инструкции на нив што го блокираат шпекулативното извршување. Условите за шпекулативно извршување може да се создадат и со користење на непривилегирани програми што работат во виртуелната машина eBPF. За да се блокира можноста за конструирање гаџети со користење на eBPF, се препорачува да се оневозможи непривилегираниот пристап до eBPF во системот („sysctl -w kernel.unprivileged_bpf_disabled=1“).

Ранливоста влијае на процесорите базирани на микроархитектурата Zen1 и Zen2, вклучувајќи ја првата и втората генерација на процесори AMD EPYC и AMD Ryzen Threadripper, како и AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon Threa Процесори од сериите PRO и APU A. За да се блокира шпекулативното извршување на инструкциите, се препорачува да се повикаат инструкции INT3 или LFENCE по операциите на разгранување (RET, JMP, CALL).

Извор: opennet.ru

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