Доступний Kasper, сканер проблем зі спекулятивним виконанням коду в ядрі Linux

Група дослідників з Амстердамського вільного університету опублікувала інструментарій Kasper, призначений для виявлення в ядрі Linux уривків коду, які можна використовувати для експлуатації вразливостей класу Spectre, спричинених спекулятивним виконанням коду процесором. Вихідні тексти інструментарію розповсюджуються під ліцензією Apache 2.0.

Нагадаємо, що для проведення таких атак, як Spectre v1, що дають можливість визначити вміст пам'яті, потрібна наявність у привілейованому коді певної послідовності команд (гаджетів), що призводить до спекулятивного виконання інструкцій. З метою оптимізації процесор починає виконувати подібні гаджети в спекулятивному режимі, потім визначає, що прогноз розгалуження не виправдалося і відкочує операції у вихідний стан, але оброблені в процесі спекулятивного виконання дані осідають у кеші та мікроархітектурних буферах і доступні для вилучення з них з використанням різних методів визначення залишкових даних стороннім каналам.

Раніше доступні інструменти для сканування гаджетів для вразливості Spectre, засновані на пошуку типових шаблонів, показували дуже високий рівень помилкових спрацьовувань, пропускаючи при цьому багато реальних гаджетів (експерименти показали, що 99% виявлених гаджетів подібними інструментами не могли використовуватися для атак, а 33% робочих гаджетів, здатних призвести до атаки, не були помічені).

Для підвищення якості визначення проблемних гаджетів Kasper моделює вразливості, які атакуючий може використовувати на кожному кроці здійснення атак класу Spectre - моделюються проблеми, що дозволяють контролювати дані (наприклад, підстановка даних атакуючого в мікроархітектурні структури для впливу на подальше спекулятивне виконання за допомогою атак класу LVI), отримувати доступ до конфіденційної інформації (наприклад, при виході за межі буфера або використання пам'яті після її звільнення) та організовувати витік конфіденційної інформації (наприклад, аналізуючи стан процесорного кешу або використовуючи метод MDS).

Доступний Kasper, сканер проблем зі спекулятивним виконанням коду в ядрі Linux

При тестуванні ядро ​​пов'язується з runtime-бібліотеками Kasper та перевірками, що працюють на рівні LLVM. У процесі перевірки проводиться емуляція спекулятивного виконання коду, реалізована за допомогою механізму checkpoint-restore, який спеціально виконує невірно передбачену гілку коду, після чого відкочується до початкового стану до початку розгалуження. Kasper також намагається моделювати різні програмні та апаратні вразливості, аналізує вплив архітектурних та мікроархітектурних ефектів, та виконує fuzzing-тестування можливих дій атакуючого. Для аналізу потоків виконання використовується порт DataFlowSanitizer для ядра Linux, а для fuzzing-тестування модифікована версія пакету syzkaller.

Доступний Kasper, сканер проблем зі спекулятивним виконанням коду в ядрі Linux

У ході сканування ядра Linux за допомогою Kasper виявлено 1379 раніше невідомих гаджетів, які потенційно призводять до витоку даних під час спекулятивного виконання інструкцій. Зазначається, що можливо лише частина з них може представляти реальні проблеми, але для демонстрації того, що є і реальна небезпека, а не тільки теоретична, для одного з проблемних уривків коду було розроблено робочий прототип експлоїту, що веде до витоку інформації з пам'яті ядра.

Джерело: opennet.ru

Додати коментар або відгук