В Linux обнаружена серьезная уязвимость, связанная с интерфейсом io_uring, которая позволяет руткитам незаметно работать в системе и обходить даже самые продвинутые средства безопасности корпоративного уровня.
Исследователи из компании ARMO выявили эту проблему и разработали руткит Curing, чтобы продемонстрировать, насколько реально использовать io_uring для скрытия вредоносной активности.
io_uring — это интерфейс ядра Linux, появившийся в версии 5.1 в 2019 году. Он предназначен для эффективного и асинхронного выполнения операций ввода-вывода, заменяя традиционные системные вызовы, которые могут замедлять работу процессов. io_uring использует кольцевые буферы, которые совместно используют программа и ядро, чтобы ставить задачи в очередь и обрабатывать их асинхронно — без приостановки выполнения программы.
Проблема заключается в том, что большинство средств безопасности отслеживает только подозрительные системные вызовы или хуки (например, ptrace или seccomp), при этом полностью игнорируя все, что происходит через io_uring. Это создает опасную «слепую зону».
Исследователи отмечают, что io_uring поддерживает 61 тип операций — от чтения/записи файлов и управления сетевыми соединениями до запуска новых процессов, изменения прав доступа к файлам и чтения содержимого каталогов. Все это делает его мощным инструментом для маскировки вредоносной активности.
Учитывая риски, Google уже отключила io_uring по умолчанию в Android и ChromeOS, так как эти системы используют ядро Linux и унаследовали связанные с ним уязвимости.
Чтобы проверить теорию на практике, ARMO создала руткит Curing, который использует io_uring для получения команд с удаленного сервера и выполнения произвольных действий без задействования классических системных вызовов.
Во время тестирования Curing большинство популярных инструментов безопасности не смогли обнаружить его активность. Например, Falco бездействовал даже при использовании пользовательских правил, а Tetragon не зафиксировал вредоносную активность при стандартных настройках.
Тем не менее, команда Tetragon не считает свою платформу уязвимой, утверждая, что при включении соответствующего мониторинга руткит можно обнаружить.
ARMO дополнительно протестировала Curing на коммерческих продуктах, но не уточнила, о каких именно решениях идет речь. Результаты подтвердили — большинство решений не замечают вредоносную активность, если она реализована через io_uring.
ARMO выложила руткит Curing в открытый доступ на GitHub, чтобы все желающие могли его протестировать.
В компании считают, что решить проблему поможет внедрение систем контроля безопасности на уровне ядра — Kernel Runtime Security.
Угрозы безопасности
• Уязвимость в Linux-интерфейсе io_uring позволяет скрытым руткитам обходить защиту
• Французские власти снова пытаются получить доступ к сообщениям в Telegram
• Опасный вирус SuperCard X ворует данные карт через NFC на Android, обходя защиту антивирусов
• Расширения Chrome с 6 миллионами установок содержат скрытый код отслеживания
• Apple устранила две уязвимости нулевого дня, которые использовались в атаках на iPhone
• В Chrome 136 будет устранена многолетняя проблема конфиденциальности