Проблема в среде выполнения Linux связана с интерфейсом io_uring и позволяет руткитам оставаться незамеченными, обходя современные средства корпоративной безопасности. Эта особенность была обнаружена исследователями из компании ARMO, которые создали proof-of-concept руткит Curing, демонстрирующий атаки с применением io_uring.

io_uring представляет собой интерфейс ядра Linux для асинхронных операций ввода-вывода. Он был представлен в 2019 году в Linux 5.1 для решения проблем производительности и масштабируемости в традиционной системе ввода/вывода.

Вместо того чтобы полагаться на системные вызовы, которые вызывают большие нагрузки и приводят к зависанию процессов, io_uring использует кольцевые буферы, которые совместно используются программами и ядром системы, и ставит запросы ввода-вывода в очередь, и они в итоге обрабатываются асинхронно.

По словам исследователей, проблема возникает из-за того, что большинство защитных инструментов отслеживают подозрительные системные вызовы и хуки (например, ptrace или seccomp), но полностью игнорируют все, что связано с io_uring, создавая в системе опасное «слепое пятно».

Эксперты объясняют, что io_uring поддерживает широкий спектр операций, включая чтение и запись файлов, создание и прием сетевых соединений, запуск процессов, изменение прав доступа к файлам и чтение содержимого каталогов, что делает его мощным инструментом, особенно если речь идет о руткитах. Риски оказались настолько велики, что разработчики Google приняли решение отключить io_uring по умолчанию в Android и ChromeOS.

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

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

Кроме того, ARMO сообщает, что протестировала коммерческие инструменты и подтвердила их неспособность обнаруживать малварь, использующую io_uring. Однако какие именно коммерческие решения тестировались, исследователи не раскрывают.

Для тех, кто хочет проверить свои среды на устойчивость перед такими угрозами, ARMO уже разместила Curing на GitHub.

Исследователи полагают, что решить проблему можно при помощи Kernel Runtime Security Instrumentation (KRSI), что позволит привязывать программы eBPF к событиям ядра, связанным с безопасностью.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии