Threat Response
Threat Response

Информация об уязвимости Copy Fail, которая позволяет получить root практически на любой современной сборке Linux

UPD 05.05.2026: добавили рекомендации, которые помогают обнаружить эксплуатацию CVE‑2026‑31431 при помощи Kaspersky Container Security.

UPD 04.05.2026: добавили рекомендации, которые помогают обнаружить подобную вредоносную активность компаниям, использующим нашу SIEM-систему Kaspersky Unified Monitoring and Analysis Platform (KUMA).

Рабочий эксплойт на Python (позже появился и на других языках) реализуется примерно десятью строками кода и использует штатные системные вызовы, которые неотличимы от нормального функционирования системы. Рассказываем, что представляет собой уязвимость CVE-2026-31431 с неофициальным названием Copy Fail, опубликованная 29 апреля. Мы оценили ее применимость для наших продуктов, а также представили способы устранения и детектирования.

Предположительно, корень проблемы – коммит 72548b093ee3, добавленный в ядро Linux в 2017 году. Он внедрил поддержку операций «на месте» (in-place) для AEAD-шифрования в модуле algif_aead, что привело к дефекту обработки буферов. Таким образом, уязвимость затрагивает ядра, выпущенные в период с 2017 по 2026 год. Под угрозой находятся как устаревшие серверные конфигурации, так и актуальные дистрибутивы: Ubuntu, RHEL, отдельные сборки WSL2 и другие системы с загруженным модулем algif_aead.

Суть уязвимости и как работает эксплойт

Криптографический алгоритм authencesn в процессе работы использует часть выделенной памяти как временный буфер и записывает четыре байта напрямую в страницы файлового кэша (page cache). Это дает злоумышленнику возможность контролируемо изменять содержимое кэша любого файла, доступного для чтения.

Рабочий эксплойт — это минималистичный Python-скрипт (~ 732 байта), который через интерфейс AF_ALG и системный вызов splice() записывает четыре контролируемых байта в кэш, например, исполняемого файла с битом setuid. В результате код программы изменяется непосредственно в оперативной памяти: при следующем запуске она выполняет вредоносные действия с правами суперпользователя. При этом сам файл на диске остается неизменным, что позволяет обойти средства контроля целостности.

Уязвимость нельзя использовать удаленно — атакующему нужен локальный доступ к системе, однако этот дефект может быть использован в цепочке атаки, после получения RCE, или, например, внутренним злоумышленником.

Особую значимость уязвимость приобретает в контексте контейнерных сред. По умолчанию технологии Docker, LXC и Kubernetes предоставляют процессам внутри контейнера доступ к подсистеме AF_ALG, если модуль algif_aead загружен в ядре хоста. Таким образом, Copy Fail создает риск нарушения изоляции контейнера и получения контроля над физической машиной. При этом эксплуатация не требует применения сложных техник, таких как race condition или подбор адресов в памяти, что снижает порог входа для потенциального атакующего. Детектирование атаки затруднено тем, что эксплойт использует исключительно легитимные системные вызовы, которые сложно отличить от штатной работы приложений.

Исправление уже включено в стабильные ветки ядра Linux (коммит a664bf3d603d): разработчики устранили некорректную валидацию буферов при обработке криптографических операций «на месте» (in-place). В случаях, когда оперативное обновление ядра невозможно, рекомендуется временно заблокировать загрузку модуля algif_aead. Для этого необходимо добавить правило install algif_aead /bin/false в директорию конфигурации modprobe.d и выгрузить модуль командой rmmod. В системах, где криптографический интерфейс скомпилирован в ядро (CONFIG_CRYPTO_USER_API_AEAD=y), может потребоваться добавление параметра initcall_blacklist в загрузочные настройки. Дополнительная техническая документация по интерфейсу AF_ALG и уязвимости CVE-2026-31431 доступна в открытых источниках.

Как выявить атаку в случае эксплойта на Python

Оригинальный эксплойт на Python оставляет видимые следы. Обратите внимание на характерные командные строки. Команда sh -c напрямую запускает привилегированные suid-утилиты (su, sudo, mount, umount, passwd, gpasswd, chfn, chsh, newgrp, fusermount3).

Запуск отслеживается по характерным командным строкам:

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

Обнаружение с помощью SIEM-системы

Ниже представлены рекомендации по детектированию атак в SIEM-системе с использованием журналов событий auditd:

Обнаружение чтения (syscall: openat) бинарных файлов с установленным suid-битом (su, sudo, newgrp, passwd, gpasswd, chfn, mount, umount, fusermount, fusermount3, chsh — список может пополняться) от имени процесса не из /usr/bin, /bin или от имени python. Логирование может быть включено следующим правилом:

-w /usr/bin/su -p r — пример для /usr/bin/su

Обнаружение функции передачи данных splice (syscall: splice) между файловыми дескрипторами после чтения бинарного файла с установленным suid-битом (см. выше) от пользователя без root. Логирование для splice может быть включено следующими правилами:

Обнаружение по характерным командным строкам (syscall: execve), где командная строка равна sh -c -- su — пример для /usr/bin/su

Обнаружение создания сокета с параметром SOCK_STREAM=AF_ALG (syscall: socket), где аргумент a0=26. Необходимо учитывать, что в событии auditd значение аргумента указано в шестнадцатеричном виде, а в правиле аудита необходимо указывать в десятичном виде. Логирование может быть включено следующими правилами:

Детектирование продуктами «Лаборатории Касперского»


Для защиты компаний, использующих нашу SIEM-систему Kaspersky Unified Monitoring and Analysis Platform (KUMA), мы подготовили пакет правил корреляции, которые помогают обнаружить подобную вредоносную активность. Правила уже доступны клиентам для скачивания в репозитории KUMA; название пакета: [OOTB] CopyFail (CVE-2026-31431) package — ENG.

Как мы упоминали выше, для уязвимости Copy Fail появляются новые эксплойты: помимо первоначальной реализации на языке Python, в открытых репозиториях уже зафиксированы рабочие варианты на языках Go и Rust. Данные реализации могут использовать иные техники обхода защитных механизмов и варьировать последовательность системных вызовов, что требует адаптации правил детектирования.

В связи с этим рекомендуется обратить внимание на аномальную активность, связанную с изменением идентификаторов пользователей (UID) в цепочках процессов. В частности, следует мониторить случаи, когда родительский и дочерний процессы, запущенные от имени неизвестных исполняемых файлов или файлов, нехарактерных для данной инфраструктуры, демонстрируют несоответствие ожидаемых привилегий — например, повышение прав без явного вызова setuid или sudo. Такие события могут свидетельствовать о попытке эксплуатации уязвимостей класса LPE, включая Copy Fail.

Эксперты «Лаборатории Касперского» в настоящее время завершают разработку универсального метода детектирования атак, использующих данную уязвимость.

Эксплуатация атаки через первоначальный PoC, написанный на Python, успешно выявляется с помощью Kaspersky Endpoint Detection and Response Expert.

Данную активность можно выявлять, отслеживая сценарий, при котором процесс оболочки, запущенный не от имени root, инициируется из Python-процесса, а в его аргументах присутствует попытка выполнения команды su или любого другого SUID-бинарного файла.

Такой подход позволяет обнаруживать потенциально опасные действия, когда Python-скрипт пытается инициировать выполнение привилегированных команд через оболочку, не обладая необходимыми правами. Это может указывать на попытки эскалации привилегий или обхода установленных ограничений доступа. KEDR Expert детектирует эту активность с помощью правила possible_lpe_by_python.

Кроме того, как уже отмечалось ранее, данную активность можно выявлять путем анализа характерных командных строк. В частности, внимание следует уделять конструкциям вида sh -c -- su, где устойчивый паттерн sh -c используется для передачи команды оболочке. KEDR Expert детектирует эту активность с помощью правила possible_copy_fail_cve_2026_31431.

Для проверки контейнерных сред (Docker, Kubernetes) на возможность эксплуатации уязвимости CVE‑2026‑31431 можно воспользоваться нашим решением Kaspersky Container Security (KCS), для которого мы подготовили обновления правил обнаружения уязвимых версий ядра Linux.

Информация об уязвимости Copy Fail, которая позволяет получить root практически на любой современной сборке Linux

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Отчеты