Закрываем свежую уязвимость Copy Fail (CVE-2026-31431)

Делимся нашими рекомендациями.

Copy Fail (CVE-2026-31431) — это логическая уязвимость в подсистеме криптографического API ядра Linux, позволяющая обычному пользователю системы получить права суперпользователя (root). PoC работает на всех основных дистрибутивах Linux, выпущенных с 2017 года и до момента выхода патча, без модификаций под конкретное ядро или дистрибутив.

Атака:

  • не требует удалённого доступа — только непривилегированный локальный аккаунт;
  • не требует ни race window, ни kernel-specific смещений;
  • использует крипто-API ядра (AF_ALG), который включён в дефолтных конфигурациях практически всех мейнстрим-дистрибутивов;
  • может быть использована как примитив побега из контейнера на хост, поскольку page cache общий для всего узла.

Затронутые технологии

  • ядро Linux, подсистема crypto/ (модуль algif_aead);
  • интерфейс пользовательского пространства AF_ALG;
  • системный вызов splice() в связке с сокетами AF_ALG.

Уязвимость напрямую не затрагивает следующие пути использования крипто-API: dm-crypt / LUKS, kTLS, IPsec/XFRM, in-kernel TLS, OpenSSL/GnuTLS/NSS в дефолтных сборках, SSH, kernel keyring crypto — все они работают с in-kernel crypto API напрямую и не проходят через AF_ALG.

Уязвимые продукты и версии

Уязвимыми являются ядра Linux, собранные в интервале с 2017 года (момент внедрения in-place оптимизации algif_aead) до момента включения исправляющего патча. Поскольку модуль algif_aead входит в дефолтную конфигурацию ядра большинства дистрибутивов, эксплуатация возможна «из коробки».

Уязвимость даёт возможность при каждом запросе перезаписать 4 байта по выбранному смещению. Это позволяет атакующему через отправку серии запросов изменить в страничном кеше содержимое любого файла в системе, доступного для чтения, предварительно добившись его помещения в кеш. Так как при любых операциях чтения из файлов содержимое отдаётся в первую очередь из страничного кеша, после замены информации в страничном кеше ядро или процесс при чтении данных из файла получит не фактические, а подменённые данные. Это может применяться для подстановки кода в запускаемые исполняемые файлы или загружаемые разделяемые библиотеки. При этом страница не помечается как dirty для writeback, поэтому файл на диске не меняется и FIM-инструменты модификацию пропускают.

Для выполнения кода с правами root достаточно добиться изменения страничного кеша для любого исполняемого файла с флагом suid root. В предложенном эксплоите выполняется чтение исполняемого файла /usr/bin/su и модификация загруженного в страничный кеш содержимого этого файла для подстановки в него своего кода. При последующем запуске утилиты «su» в память будет загружен не оригинальный исполняемый файл с накопителя, а изменённая копия из страничного кеша.

Разработчик

Linux kernel community (mainline). Уязвимость привнесена коммитом 2017 года, реализующим in-place оптимизацию в algif_aead. Исправляющий патч принят в mainline.

Вектор атаки и уровень опасности согласно CVSS v.3.1

Базовая оценка: 7,8 HIGH

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Рекомендации по обнаружению уязвимости и дополнительные материалы

Как можно скорее — отключить модуль algif_aead до установки патча ядра. Команда выполняется от имени root и применяется немедленно (новые сокеты AF_ALG создаваться не смогут, ранее открытые — продолжат работать до закрытия):

# echo "install algif_aead /bin/false" > 
/etc/modprobe.d/disable-algif.conf
# rmmod algif_aead 2>/dev/null || true

Обновить ядро до версии, содержащей патч. Уязвимость присутствует в ядрах с 4.14 (commit 72548b093ee3, 2017 год) и устранена в следующих релизах:

  • 6.18.22 (стабильная ветка) — commit fafe0fa2995a
  • 6.19.12 (стабильная ветка) — commit ce42ee423e58
  • 7.0-rc7 (mainline) — commit a664bf3d603d

Для контейнерных и sandbox-нагрузок целесообразно блокировать создание сокетов AF_ALG через seccomp независимо от состояния патчей.

Безопасная версия уязвимого продукта или патч

Уязвимость устранена в ядре Linux 6.18.22, 6.19.12 и 7.0-rc7 (mainline-коммит a664bf3d603d)

Хронология раскрытия

  • 23.03.2026 — отчёт направлен в Linux kernel security team
  • 24.03.2026 — первичное подтверждение получения отчёта
  • 25.03.2026 — патчи предложены и проверены в рассылке
  • 01.04.2026 — патч принят в mainline
  • 22.04.2026 — присвоен идентификатор CVE-2026-31431
  • 29.04.2026 — публичное раскрытие на https://copy.fail/

Влияние на сервисы Yandex Cloud

Обновили конфигурации инфраструктуры Yandex Cloud для применения митигирующих мер.

Пользователям сервиса Yandex Managed Service for Kubernetes® нужно самостоятельно применить митигирующую меру на узлах своих кластеров. Для этого опубликован DaemonSet, который отключает модуль algif_aead. Применение выполняется штатной командой:

$ kubectl apply -f copy-fail-mitigation-daemonset.yaml

Актуальные версии образов в Yandex Cloud Marketplace, содержащие митигирующие меры, в настоящее время готовятся к публикации.

Исходный отчёт

Если вам нужна дополнительная информация, пожалуйста, напишите на cloudtrust@yandex-team.ru.

Следим за рисками, отражаем атаки, делимся решениями. Всё о безопасности облачной инфраструктуры — практика, кейсы и инсайты от команды Yandex Cloud, которая защищает её каждый день.

author
Команда Yandex Cloud
Закрываем свежую уязвимость Copy Fail (CVE-2026-31431)
Войдите, чтобы сохранить пост