
USENIX: data-only атаки виявилися значно простішими, ніж вважалося
Дослідники з VUSec створили інструмент Einstein, який автоматично генерує data-only атаки: програма не змінює потік керування, але працює зі шкідливими аргументами й обходить сучасні засоби захисту.
Інструмент, створений групою VUSec Амстердамського Vrije Universiteit, автоматично генерує так звані data-only атаки — експлойти, що ніколи не змінюють потік керування програми — значно легше, ніж досі вважали у галузі безпеки. Результати описано в статті USENIX ;login: «Data-Only Attacks Are Easier than You Think» (1 липня 2024 року).
Що таке data-only атака
Класичний експлойт перехоплює потік керування, перезаписуючи покажчик на код — шлях, який DEP, CFI і CPI зробили дуже складним. data-only атака натомість дозволяє програмі виконати всі функції та системні виклики, які вона й мала, але зі шкідливими даними, тож змінюються лише аргументи.
Перезапис шляху CGI-BIN на сервері
Приклад — вебсервер, змінна cgi_bin_path якого вказує на «/usr/local/server/cgi-bin». Помилка memory safety — той тип, який, за даними Microsoft, Google і Mozilla, становить близько 70% їхніх багів безпеки — дозволяє зловмисному клієнту переповнити буфер і перезаписати шлях на «/bin». Запит «POST /sh» із «touch /tmp/attacker-was-here» змушує сервер об'єднати ці два рядки в «/bin/sh»: execve запускає оболонку, і файл створюється. Жертва не виконує коду зловмисника — відрізняються лише аргументи системного виклику.
Einstein і цифри
Інструмент зветься Einstein — за цитатою, приписуваною Albert Einstein. Він націлюється на системні виклики — універсальний інтерфейс до ядра — і динамічним taint-аналізом відстежує, які підконтрольні зловмиснику значення потрапляють в аргументи чутливих викликів на кшталт execve або write; кандидатів беруть з identity data flow — випадків, коли аргумент є дослівною копією підконтрольних даних. Результати: 1 834 такі виклики в httpd, 1 623 — у nginx, 2 105 — у postgres, 218 — у redis і 92 — у lighttpd; окрім postgres, 82–98% мали identity data flow. Вистачило тестових наборів із покриттям 27–49%, а лише для nginx Einstein підтвердив 944 експлойти, два з них обходять сучасні засоби захисту.
Чому це важливо для захисників
data-only атаки ламають припущення, на якому тримаються сучасні засоби захисту. У перехоплення потоку керування була чітко визначена ціль — покажчик на код, що живить непряме розгалуження — тож DEP, CFI і CPI могли бути одночасно і всеохопними, і практичними. Оскільки data-only атака може зіпсувати будь-які дані, захист, на думку авторів, зазвичай може бути лише одним із двох: повна memory safety або data-flow integrity коштують продуктивності, а практичні заходи на кшталт фільтрації системних викликів — неповні.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.