Как стать автором
Обновить

Исследователи безопасности показали способ обхода антивирусов в Linux с Syscall-Watching

Время на прочтение3 мин
Количество просмотров1.3K

Исследователи службы безопасности ARMO создали программу проверки концепции под названием Curing, которая демонстрирует так называемое «слепое пятно» мониторинга антивирусов Linux и других инструментов защиты конечных точек через интерфейс io_uring ядра.

Этот интерфейс позволяет приложениям выполнять запросы ввода-вывода без использования традиционных системных вызовов. Обычно инструменты безопасности полагаются именно на мониторинг системных вызовов для обнаружения угроз.

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

Curing полностью работает через io_uring. Поскольку она избегает системных вызовов, программа, по-видимому, осталась незамеченной такими инструментами, как Falco, Tetragon и Microsoft Defender в конфигурациях по умолчанию. 

ARMO заявила, что это «главное слепое пятно» в стеке безопасности Linux.

Интерфейс io_uring был представлен в ядре Linux версии 5.1, выпущенном в 2019 году. С технической точки зрения, он был разработан для повышения производительности за счёт включения асинхронных операций ввода-вывода между пользовательским пространством и ядром Linux через общие кольцевые буферы. Эта архитектура сокращает количество системных вызовов, необходимых для операций ввода-вывода, и минимизирует накладные расходы, связанные с частыми переходами между пользовательским пространством и пространством ядра.

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

Хотя для настройки буферов io_uring требуются системные вызовы, фактическая вредоносная активность происходит вне поля зрения в очередях. Демонстрацию кода можно увидеть в видео ниже. 

В ARMO предполагают, что антивирус можно обновить, чтобы он помечал любую настройку io_uring как потенциально опасную; либо проникнуть в ядро, возможно, через eBPF, чтобы контролировать io_uring. В последних версиях ядра, начиная с 6.6, можно использовать эту команду, чтобы отключить интерфейс:

sysctl -w kernel.io_uring_disabled=2

«Многие поставщики выбирают самый простой путь: подключаются напрямую к системным вызовам. Хотя этот подход обеспечивает быструю видимость, он имеет ограничения. В частности, системные вызовы не всегда гарантированно будут вызваны», — пояснил Амит Шендель, руководитель отдела исследований безопасности в ARMO.

В The Register связались с поставщиками антивирусов, указанными в отчёте ARMO. Falco признал наличие проблемы и сказал, что ведётся работа по её устранению. В Tetragon заявили, что атака поддаётся обнаружению, хотя и не с настройками по умолчанию, на которые полагаются большинство пользователей. А команда Microsoft Defender заявила, что может обнаруживать и блокировать вредоносную активность. Там порекомендовали клиентам включать постоянную защиту в Microsoft Defender и проявлять осторожность при загрузке файлов из неизвестных источников. 

Тем временем в Google в середине 2023 года полностью отключили io_uring в ChromeOS, ограничили использование на Android с помощью политик seccomp и SELinux, а также удалили интерфейс с рабочих серверов. До этого IT-гигант заплатил около $1 млн в виде вознаграждений за ошибки, связанные с уязвимостями io_uring.

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

В феврале «Лаборатория Касперского» выпустила для обычных пользователей антивирусное решение Kaspersky для Linux с защитой конфиденциальных и платёжных данных от киберугроз, в том числе от вредоносных программ, фишинга и скама. Kaspersky для Linux на ПК для домашнего использования поддерживает работу с дистрибутивами на базе Ubuntu, ALT Linux, Uncom и RedOS.

Теги:
Хабы:
+5
Комментарии0

Другие новости