Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
copy-fail-checker — Bash-проверщик только для чтения для уязвимости Copy Fail в ядре Linux (CVE-2026-31431) | Kitploit
Инструменты/GitHubGitHub/samanzamani/copy-fail-checker
Повышение привилегийСканеры уязвимостейАнализ уязвимостейЭксплуатацияСкриптинг и автоматизацияКриптографияОбучение и Образование
GitHubsamanzamani/copy-fail-checker

copy-fail-checker

Bash-проверщик только для чтения для уязвимости Copy Fail в ядре Linux (CVE-2026-31431)

Репозиторий
5123 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Copy Fail Checker — CVE-2026-31431

Небольшой Bash-скрипт с минимумом зависимостей, который сообщает, подвержена ли ваша система Linux уязвимости локального повышения привилегий Copy Fail (CVE-2026-31431).

Скрипт только читает систему: он никогда не эксплуатирует уязвимость, не загружает модули ядра и не изменяет систему.


Что такое Copy Fail?

Copy Fail — это логическая ошибка в криптографическом шаблоне AEAD authencesn ядра Linux, доступная из пользовательского пространства через сокетный интерфейс AF_ALG (algif_aead).

ПолеЗначение
CVECVE-2026-31431
Раскрыта2026-04-29
CVSS v3.17.8 (высокий)
КлассЛокальное повышение привилегий
Затронутый компонентcrypto/authencesn + crypto/algif_aead
Появилась в2017 (оптимизация AEAD in-place в algif_aead.c)
Исправление в mainlineкоммит a664bf3d603d, внесён 2026-04-01

Почему это важно

Непривилегированный локальный пользователь может вызвать детерминированную управляемую запись 4 байт в page cache любого файла, который он может читать. Публичный proof-of-concept (732 байта Python) использует этот примитив для перезаписи setuid-бинарника и получения root практически во всех массовых дистрибутивах, выпущенных с 2017 года.

Кто затронут

Каждый дистрибутив Linux, который поставляет ядро, собранное с 2017 года с включённым algif_aead. Подтверждённо затронутые семейства включают:

  • Ubuntu 18.04 → 25.10 (Ubuntu 26.04 «Resolute» не затронут)
  • Debian (все поддерживаемые в настоящее время выпуски)
  • RHEL / AlmaLinux / Rocky / CentOS Stream 8, 9, 10
  • SUSE Linux Enterprise / openSUSE
  • Amazon Linux 2023
  • Большинство контейнерных хостов и образов узлов управляемого Kubernetes, основанных на перечисленных выше

Быстрый старт

root@kitploit:~
# Download the script
curl -fsSLO https://raw.githubusercontent.com/samanzamani/copy-fail-checker/main/check-copy-fail.sh

# Make it executable
chmod +x check-copy-fail.sh

# Run it
./check-copy-fail.sh

Или клонируйте репозиторий:

root@kitploit:~
git clone https://github.com/samanzamani/copy-fail-checker.git
cd copy-fail-checker
./check-copy-fail.sh

Скрипту не требуются права root. Запуск от имени вашего обычного пользователя даёт наиболее реалистичную картину поверхности атаки, поскольку именно в таком контексте действовал бы атакующий.


Что проверяет скрипт

Скрипт выполняет три независимые проверки и объединяет их в единый вердикт.

1. Версия ядра

Он читает /etc/os-release и uname -r, затем сравнивает ваше работающее ядро с официальной исправленной версией, опубликованной службой безопасности вашего дистрибутива. Таблица версий в настоящее время охватывает:

Если вашего дистрибутива нет в таблице, скрипт переключается на проверки времени выполнения, описанные ниже.

2. Статус модуля algif_aead

Скрипт проверяет четыре вещи, ничего при этом не изменяя:

  • Загружен ли модуль в данный момент (lsmod)
  • Доступен ли модуль для загрузки (modinfo)
  • Находится ли модуль в чёрном списке в /etc/modprobe.d, /usr/lib/modprobe.d или /run/modprobe.d
  • Встроен ли модуль в ядро (builtin) в /boot/config-<uname> или /proc/config.gz

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

3. Доступность сокетов AF_ALG

Наиболее надёжный сигнал — то, что реально увидел бы атакующий. Скрипт использует крошечный Python-зонд (socket.socket(AF_ALG, SOCK_SEQPACKET, 0) с последующим bind() к AEAD-шаблону authencesn(hmac(sha256),cbc(aes))), чтобы выяснить, можно ли создавать и привязывать сокеты AF_ALG из непривилегированного контекста. Зонд создаёт сокет, привязывает его и немедленно закрывает, не оставляя ничего эксплуатируемого.

Если python3 не установлен, зонд пропускается, и вердикт основывается на проверках 1 и 2.


Возможные вердикты


JSON-вывод для автоматизации

Для CI/CD-конвейеров, управления конфигурацией или сканирования парка систем передайте --json:

root@kitploit:~
./check-copy-fail.sh --json

Пример вывода:

root@kitploit:~
{
  "verdict": "vulnerable",
  "distro_id": "ubuntu",
  "distro_version_id": "24.04",
  "kernel": "6.8.0-31-generic",
  "patched_version": "",
  "kernel_status": "unknown",
  "module_loaded": 0,
  "module_builtin": 0,
  "module_available": 1,
  "module_blacklisted": 0,
  "af_alg_status": "reachable"
}

Меры по устранению

Рекомендуется: установите обновление ядра от производителя

Это единственное полное исправление. После обновления перезагрузите систему, чтобы новое ядро действительно заработало.

root@kitploit:~
# Debian / Ubuntu
sudo apt update && sudo apt full-upgrade && sudo reboot

# RHEL / AlmaLinux / Rocky / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot

# openSUSE / SLES
sudo zypper refresh && sudo zypper update && sudo reboot

# Amazon Linux 2023
sudo dnf upgrade --releasever=latest && sudo reboot

Временное решение: отключите algif_aead

Если сейчас вы не можете перезагрузиться с пропатченным ядром, добавьте уязвимый модуль в чёрный список. Это нарушит работу любых приложений, которые легитимно используют AEAD-шифры AF_ALG (редкость на большинстве серверов — сначала проверьте в промежуточной среде).

root@kitploit:~
# Persist the blacklist across reboots
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf

# Unload it from the running kernel right now
sudo rmmod algif_aead 2>/dev/null || true

Если модуль встроен в ядро, чёрный список не сработает, но можно отключить initcall. Потребуется перезагрузка.

root@kitploit:~
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

sudo reboot

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


Пример запуска

root@kitploit:~
== System information ==
[INFO]    Distribution : Ubuntu 24.04.2 LTS (ubuntu 24.04)
[INFO]    Kernel       : 6.8.0-31-generic

== Check 1 / 3 — Kernel version ==
[WARN]    No vendor-fixed kernel version is recorded for ubuntu 24.04.
[WARN]    Falling back to runtime mitigation checks below.

== Check 2 / 3 — algif_aead kernel module ==
[WARN]    algif_aead is not loaded but can be autoloaded on demand (no blacklist found).

== Check 3 / 3 — AF_ALG socket reachability ==
[VULN]    AF_ALG sockets are reachable from this unprivileged context.

== Verdict ==
[VULN]    This system appears to be VULNERABLE to CVE-2026-31431.
[VULN]    Apply the vendor kernel update or blacklist algif_aead as a temporary mitigation.

Ограничения

  • Таблица исправленных версий охватывает только перечисленные выше семейства. PR с расширением приветствуются.
  • Скрипт доверяет uname -r. Если вы используете out-of-tree или пересобранное ядро, сравнение версий может не отражать, было ли исправление действительно бэкпортировано.
  • Работающие контейнерные или песочные среды могут сообщать blocked_permission для AF_ALG просто потому, что активен seccomp — само ядро хоста при этом может оставаться уязвимым.

Ссылки

  • Рекомендация CERT-EU 2026-005
  • Раскрытие Xint: 732 байта до root в каждом крупном дистрибутиве Linux
  • AlmaLinux: выпущены патчи для CVE-2026-31431
  • Ubuntu: доступны исправления уязвимости Copy Fail
  • Блог безопасности Microsoft: Copy Fail в облачных средах
  • Sophos: доступен PoC-эксплойт
  • Ответ SUSE на copy.fail
  • Материал The Hacker News
  • Bugcrowd: что мы знаем о Copy Fail
  • Материал The Register

Лицензия

MIT — используйте, изменяйте и распространяйте свободно. Без гарантий.

Скачать инструмент
ДистрибутивИсправленное ядро (≥)
AlmaLinux / RHEL / Rocky / CentOS 84.18.0-553.121.1.el8_10
AlmaLinux / RHEL / Rocky / CentOS 95.14.0-611.49.2.el9_7
AlmaLinux / RHEL / Rocky / CentOS 106.12.0-124.52.2.el10_1
Ubuntu 26.04+ («Resolute»)не затронут
Ubuntu 18.04 – 25.10rolling-обновления, см. apt
Debian (все выпуски)rolling-обновления, см. DSA
ВердиктКод выходаЗначение
patched0Работающее ядро имеет версию не ниже исправленной производителем.
mitigated0AF_ALG заблокирован, а модуль не загружен.
likely_mitigated0Модуль в чёрном списке и не загружен; живой зонд невозможен.
vulnerable1Ядро не пропатчено, а algif_aead / AF_ALG доступен.
unknown2Недостаточно данных для решения. Считайте систему потенциально уязвимой.
not_applicable3Система не работает под управлением Linux.