Група изследователи от Амстердамския свободен университет откри нов метод на атака «Native BHI» (CVE-2024-2201), който позволява на системи с Intel процесори да определят съдържанието на паметта на ядрото на Linux при изпълнение на експлоит в пространството на потребителя. В случай на прилагане на атаката към системи за виртуализация, атакуващият от гостуващата система може да определи съдържанието на паметта на хост средата или на други гостуващи системи.
Методът Native BHI предлага различна техника за експлоатация на уязвимостта BHI (Branch History Injection, CVE-2022-0001), която заобикаля предишно реализираните методи за защита. Предложеният през 2022 година метод на атака BHI имплементира експлоатация на уязвимост в рамките на един и същ ниво на привилегии, за което експлоитът е базиран на изпълнението на еBPF програма, заредена от потребителя в ядрото. За блокиране на уязвимостта е достатъчно да се ограничи достъпът до изпълнение на код еBPF за обикновените потребители.
Новият метод Native BHI не изисква достъп до еBPF и позволява атака от непривилегирован потребител в пространството на потребителя. Методът се основава на изпълнението на съществуващи в кода на ядрото гаджети — последователности от команди, водещи до спекулативно изпълнение на инструкции. За търсене в ядрото на подходящи гаджети беше разработен специален инструментариум InSpectre Gadget, който при анализа на ядро 6.6-rc4 откри 1511 Spectre гаджета и 2105 помощни гаджета за диспетчеризация.

На базата на намерените гаджети изследователите подготвиха експлоит, който дава възможност за извличане от буферите на ядрото на низ с хеш на паролата на потребителя root, зареден от файла /etc/shadow. Скоростта на извличане на данни от паметта на ядрото е приблизително 3.5 Кб в секунда.

Методът BHI представлява разширен вариант на атаката Spectre-v2, при който за заобикаляне на добавената защита (Intel eIBRS и Arm CSV2) и организиране на изтичане на данни се използва подмяна на стойности в буфера с глобалната история на преходите (Branch History Buffer), използван в CPU за увеличаване на точността на предсказване на разклонения, чрез вземане предвид на историята на предишните преходи. По време на атаката чрез манипулации с историята на преходите се създават условия за неправилно предсказване на прехода и спекулативно изпълнение на необходимите инструкции, резултатите от което остават в кеша.
Разликите от атаката Spectre-v2 се свеждат до използването на буфер с история на преходите (Branch History Buffer) вместо буфер за предсказване на разклонение (Branch Target Buffer). За да извлече данни от паметта, атакуващият трябва да създаде условия, при които адресът ще бъде взет от област, която трябва да бъде определена, по време на изпълнението на спекулативна операция. След изпълнението на спекулативен индиректен преход адресът, прочетен от паметта, остава в кеша, след което един от методите за определяне на съдържанието на кеша може да бъде използван на базата на анализ на промените във времето за достъп до кешираните и не кешираните данни.
Против атаката Native BHI не защитават прилагането на инструкции Intel IBT (Indirect Branch Tracking) и реализираният в ядрото на Linux хибриден механизъм за защита на потока на изпълнение на команди FineIBT, който съчетава прилагането на хардуерни инструкции IBT и софтуерната защита kCFI (kernel Control Flow Integrity) за предотвратяване на нарушението на нормалния ред на изпълнение (control flow). FineIBT позволява изпълнението само при индиректен преход, ако преходът е към инструкция ENDBR, която се намира в самото начало на функцията. Допълнително (по аналогия с механизма kCFI) следва проверка на хешовете, гарантиращи неизменността на указателите.
За защита от новия вариант на атаката в ядрото на Linux е добавено изменение, реализиращо допълнителен режим на защита, прилагащ предложените от компанията Intel хардуерни средства за защита (BHI_DIS_S) или алтернативна софтуерна защита, реализирана за защита на хипервизора. KVM. Разработчиците на хипервизора Xen също публикуваха корекция, основана на използването на режима BHI_DIS_S, който ограничава предсказанията на базата на историята на преходите. Поддръжката на BHI_DIS_S е налична в процесорите, започващи от Intel Alder Lake, както и в сървърните CPU, започващи от Intel Sapphire Rapids. Достъпен е и софтуерният режим на защита, основан на използването на последователности за изчистване на буфера на историята на преходите, но той води до по-забележимо намаление на производителността.
Източник: opennet.ru
