
Bash-скрипт для оценки подверженности Linux-хоста уязвимости CVE-2026-31431, проверки статуса модулей ядра, применения мер по смягчению последствий путем блокировки algif_aead и обновления пакетов ядра.
В этом репозитории документирован Bash-скрипт, используемый для оценки подверженности хостов Linux уязвимости CVE-2026-31431, с акцентом на Ubuntu, а также для применения простого смягчения последствий путём блокировки модуля algif_aead.
Версии на языках:
README.mdREADME.pt-BR.mdСкрипт поддерживает три режима:
--check: сбор информации о хосте и классификация текущего состояния.--mitigate: создание правила modprobe для блокировки уязвимого модуля и попытка его выгрузки.--update: выполнение обновления пакетов ядра через apt.CVE-2026-31431, публично известная как Copy Fail, — это локальная уязвимость повышения привилегий в ядре Linux, связанная с модулем algif_aead, который реализует интерфейс AEAD криптографического API ядра в пользовательском пространстве через AF_ALG.
По сути, проблема позволяет локальному пользователю с низкими привилегиями использовать логическую ошибку в пути обработки памяти этой подсистемы и повысить воздействие до полной компрометации целостности системы. Оценка, опубликованная kernel.org и отражённая в NVD, составляет CVSS 7.8 с вектором AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, что означает, что атака требует локального выполнения, но оказывает высокое воздействие на конфиденциальность, целостность и доступность.
2017 году, когда в algif_aead была добавлена оптимизация на месте.22 апреля 2026 года.Copy Fail с публичным доказательством концепции произошло 29 апреля 2026 года.1 апреля 2026 года, до широкого раскрытия конечным пользователям.Согласно опубликованным техническим рекомендациям, недостаток основан на комбинации:
AF_ALGalgif_aeadsplice()Практический результат — возможность локального процесса выполнить небольшую контролируемую запись в страницы, поддерживаемые page-cache, читаемых файлов. При благоприятных условиях этого достаточно, чтобы превратить ограниченную локальную точку опоры в повышение привилегий до root.
Реальный риск заключается не просто в «работе на уязвимом ядре Linux», а в допуске низкодоверенного локального кода до этого пути ядра. В корпоративных средах это обычно означает более высокую подверженность на:
Если у злоумышленника уже есть некоторая форма локального выполнения, даже без root, эта CVE может стать следующим шагом к компрометации хоста. На практике это расширяет риск:
algif_aeadalgif_aead является частью криптографического интерфейса ядра в пользовательском пространстве (AF_ALG). Он позволяет приложениям использовать криптографические примитивы ядра через сокеты, особенно операции AEAD (аутентифицированное шифрование со связанными данными).
Этот модуль обычно не является обязательным для большинства стандартных серверных нагрузок. Согласно рекомендациям по смягчению последствий, опубликованным CERT-EU, отключение algif_aead в качестве временной меры:
dm-crypt или LUKSkTLSIPsec/XFRMOpenSSL, GnuTLS, NSS или SSH при стандартном использованииС другой стороны, его отключение может повлиять на:
afalgAF_ALG напрямуюaead, skcipher или hash через криптографический API ядраИными словами, для большинства корпоративных хостов блокировка модуля, как правило, имеет низкое влияние. В устройствах, пользовательских криптографических стеках или сильно оптимизированных программных путях влияние следует проверить перед развёртыванием.
Блокировка модуля немедленно снижает подверженность, но сопряжена с компромиссами:
AF_ALG, могут не запуститься или потерять криптографическое ускорение на базе ядраДля производственных сред более безопасный подход — применить смягчение в контролируемом окне технического обслуживания и проверить критически важные приложения после этого.
Внесение модуля в чёрный список — лишь временная мера. Постоянное исправление:
Дополнительные рекомендуемые меры:
AF_ALG с помощью seccomp в контейнерах и конвейерах, где это применимоafalg или криптографический API ядраСкрипт проверяет:
/etc/os-releasealgif_aeadmodprobe/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run, если доступноНа основе этого возвращается одна из следующих классификаций:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWNКратко:
PATCHED_OR_NOT_AFFECTED.algif_aead не существует в текущем ядре, статус, как правило, LIKELY_NOT_VULNERABLE.MITIGATED.VULNERABLE_MODULE_LOADED.POTENTIALLY_VULNERABLE.modinfomodprobelsmodawkgrephostnameunameapt-get для --updatesudo при запуске от имени пользователя, не являющегося rootpro опционально, для обогащения анализа на UbuntuЕсли файл скрипта называется check_cve_2026_31431.sh:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
Пример вывода:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
Пример:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
Этот вывод полезен для автоматизации, инвентаризации активов и конвейеров соответствия требованиям.
Режим --mitigate создаёт файл:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
Со следующим содержимым:
install algif_aead /bin/false
blacklist algif_aead
После этого скрипт пытается удалить модуль из памяти с помощью:
modprobe -r algif_aead
Использование:
./check_cve_2026_31431.sh --mitigate
Если пользователь не является root, скрипт попытается использовать sudo.
Режим --update выполняет:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
Использование:
./check_cve_2026_31431.sh --update
Этот режим пытается обновить пакеты, связанные с ядром, в системах на основе Debian и Ubuntu. В других средах этот шаг может не применяться.
./check_cve_2026_31431.sh --help
Вывод:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected и fix_available зависят от наличия команды pro.--update использует шаблоны пакетов, ориентированные на Ubuntu и Debian, и может не охватывать все пользовательские ядра.--check для оценки хоста.--mitigate.--update или примените официальное обновление поставщика.--check --json для проверки конечного состояния и сохранения доказательств.Для ясности публикации скрипт в идеале должен использовать описательное имя, например:
check_cve_2026_31431.sh
Материал организован и опубликован с указанием авторства SEC17.
Официальный сайт:
https://sec17.com