Новая атака на Linux: io_uring позволяет выполнять команды без системных вызовов

leer en español

Новая атака на Linux: io_uring позволяет выполнять команды без системных вызовов

Традиционные системы защиты больше не справляются.

image

Исследователи по кибербезопасности обнаружили уязвимость в подходах к мониторингу безопасности Linux-систем, демонстрируя новый способ скрытого вмешательства с использованием механизма io_uring. Проблема заключается в том, что многие средства защиты полагаются на отслеживание системных вызовов, но этот механизм позволяет выполнять действия, обходя такие вызовы, создавая тем самым опасную слепую зону.

Речь идёт о PoC-рутките под названием Curing, разработанном командой ARMO. Он использует io_uring — интерфейс ядра Linux, представленный в версии 5.1 в марте 2019 года. Этот механизм построен на двух кольцевых буферах — очереди отправки и очереди завершения — и предназначен для асинхронной обработки запросов на ввод-вывод между пользовательским пространством и ядром. За счёт прямого взаимодействия с этими структурами руткит способен получать команды с C2-сервера и выполнять их без единого системного вызова, тем самым оставаясь невидимым для большинства традиционных решений по защите.

Исследование показало , что популярные инструменты, такие как Falco и Tetragon, не способны засечь активность, основанную на io_uring. Это связано с тем, что они делают ставку на перехват системных вызовов. В результате такие угрозы проходят мимо их систем анализа. Даже агент Falcon от CrowdStrike, в изначальной версии не отслеживавший операции с использованием io_uring, позже получил обновление, устраняющее этот недочёт. Однако, по данным ARMO, Microsoft Defender for Endpoint на Linux по-прежнему не способен эффективно фиксировать подобные атаки вне зависимости от задействованного механизма.

Проблема не нова. Google ещё в 2023 году признала опасность io_uring, ограничив его использование в Android, ChromeOS и на серверной инфраструктуре. Представители компании тогда заявили, что данный интерфейс предоставляет злоумышленникам слишком мощные инструменты для эксплуатации уязвимостей.

В ARMO подчёркивают, что у большинства защитных решений подход к мониторингу примитивен — они просто следят за системными вызовами, считая их основным индикатором активности. Но в современных условиях этого уже недостаточно. Появление таких механизмов, как io_uring, наглядно демонстрирует, насколько легко можно обойти традиционные средства анализа.

Вывод один — для эффективной защиты нужны более глубокие механизмы наблюдения за поведением программ, включающие анализ внутренних структур ядра и логики взаимодействия компонентов, а не только поверхностное слежение за вызовами. Иначе подобные руткиты будут становиться всё более изощрёнными и незаметными.

Твой код — безопасный?

Расскажи, что знаешь о DevSecOps.
Пройди опрос и получи свежий отчет State of DevOps Russia 2025.