
Shell scanner for CVE-2026-31431 "Copy Fail" — a local privilege escalation via Linux kernel page cache corruption (algif_aead/AF_ALG). Checks kernel version, patch status, module state, setuid exposure and mitigations. Supports Debian 11–13 and Ubuntu 20.04–25.10. CI/CD-ready (exit codes + JSON output).
Сканер на основе оболочки для CVE-2026-31431 "Copy Fail" — уязвимости локального повышения привилегий в криптографической подсистеме ядра Linux (интерфейс algif_aead / AF_ALG). Непривилегированный локальный пользователь может записать 4 байта в кеш страниц в памяти setuid-бинарника (например, /usr/bin/su) и получить root-оболочку — без изменения файла на диске.
a664bf3d603d| Дистрибутив | Релиз | Исправленная версия |
|---|---|---|
| Debian | 11 Bullseye | 5.10.251-3 |
| Debian | 12 Bookworm | 6.1.170-1 |
| Debian | 13 Trixie | 6.12.85-1 |
| Debian | Sid / Forky | 6.19.14-1 |
| Ubuntu | 20.04 LTS Focal (GA) | 5.4.0-220.240 |
| Ubuntu | 20.04 LTS Focal (HWE) | 5.15.0-135.145~20.04.1 |
| Ubuntu | 22.04 LTS Jammy (GA) | 5.15.0-135.145 |
| Ubuntu | 22.04 LTS Jammy (HWE) | 6.8.0-61.63~22.04.1 |
| Ubuntu | 24.04 LTS Noble | 6.8.0-61.63 |
| Ubuntu | 24.10 Oracular | 6.11.0-27.27 |
| Ubuntu | 25.04 Plucky | 6.14.0-15.15 |
| Ubuntu | 25.10 Questing | исправление в основной ветке (≥ 6.15) |
| Общий | любой | основная ветка: проверка диапазона (4.14 – 6.14 уязвимы) |
Производные Ubuntu на основе указанных выпусков (Pop!_OS, Linux Mint, Elementary OS и т.д.) также обнаруживаются через ID_LIKE в /etc/os-release.
# Basic scan
bash cve-2026-31431-detect.sh
# No colour output (log files, CI)
bash cve-2026-31431-detect.sh --no-colour
# JSON output (machine-readable, for pipelines)
bash cve-2026-31431-detect.sh --json
# Quiet mode — only print the summary
bash cve-2026-31431-detect.sh --quiet
# Combine flags
bash cve-2026-31431-detect.sh --json --quiet
Права root не требуются. Дополнительные пакеты не нужны, кроме стандартной оболочки (bash ≥ 4.3) и опционально python3 для проверки живого сокета AF_ALG.
| Код | Значение |
|---|---|
0 | Условий уязвимости не найдено |
1 | Обнаружено одно или несколько условий уязвимости |
2 | Ошибка скрипта / не удалось завершить проверки |
Предназначен для использования в конвейерах DevSecOps — передавайте вывод JSON в вашу SIEM, систему тикетов или дашборд соответствия.
Скрипт выводит результаты на двух языках:
Оба раздела выводятся в stdout после результатов по каждой проверке.
=== Kernel Version ===
[INFO] Distro flavour : ubuntu (id=ubuntu, codename=jammy, version=22.04)
[INFO] Kernel release : 5.15.0-135-generic
[OK] Kernel version
Reason : Ubuntu jammy: kernel 5.15.0-135.145 >= patched version 5.15.0-135.145
...
✅ PROTECTED — SYSTEM IS NOT VULNERABLE
❌ VULNERABLE — IMMEDIATE ACTION REQUIRED
✗ Kernel version
✗ Patch presence
✗ algif_aead module
✗ AF_ALG socket
✗ Setuid binaries
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: uname -v → must show >= 6.1.170-1 (Bookworm)
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: cat /proc/version_signature
Эффективно только если CONFIG_CRYPTO_USER_API_AEAD=m (собрано как модуль). Не действует, если опция вкомпилирована (=y).
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true
Это не затрагивает SSH, dm-crypt/LUKS, OpenSSL, GnuTLS, NSS, веб-серверы или шифрование диска.
MIT
| # | Проверка | Метод |
|---|
| 1 | Версия ядра | uname -r / uname -v / dpkg / /proc/version_signature |
| 2 | Наличие исправления | Версия сборки Debian, версия пакета Ubuntu, префикс коммита в /proc/version |
| 3 | Модуль algif_aead | /proc/modules, чёрный список modprobe.d, .ko на диске |
| 4 | Сокет AF_ALG | Попытка живого socket(AF_ALG, …) через Python 3 |
| 5 | Setuid-бинарники | Типовые setuid-root бинарники в качестве целей для записи |
| 6 | Средства защиты | Статус AppArmor, SELinux, seccomp |
| 7 | Конфигурация ядра | CONFIG_CRYPTO_AUTHENC, CONFIG_CRYPTO_USER_API_AEAD |
| 8 | Пространства имён пользователей | unprivileged_userns_clone, max_user_namespaces |
| 9 | Прозрачные большие страницы | Настройка THP и влияние на эксплуатацию |
| 10 | Окружение | Обнаружение Docker / Kubernetes / WSL, предупреждение о root |