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

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

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

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

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

Категории

Все категории
Loading categories
copy-fail-cve-2026-31431 — Пассивный сканер Linux-хостов, который классифицирует подверженность уязвимости CVE-2026-31431 по версии ядра, журналу изменений дистрибутива, статусу модуля и доступности AF_ALG, с выводом в JSON для интеграции с SIEM. | Kitploit
Инструменты/GitHubGitHub/effiesec/copy-fail-cve-2026-31431
Сканеры уязвимостейАнализ уязвимостейАудит конфигурации
GitHubeffiesec/copy-fail-cve-2026-31431

copy-fail-cve-2026-31431

Пассивный сканер Linux-хостов, который классифицирует подверженность уязвимости CVE-2026-31431 по версии ядра, журналу изменений дистрибутива, статусу модуля и доступности AF_ALG, с выводом в JSON для интеграции с SIEM.

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

Популярное

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

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

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

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

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

Проверка CVE для Copy Fail (CVE-2026-31431)

Авторы/Участники: Patrick Doyle (Автор/Сопровождающий), Effie Renard (Соавтор), Kimberly-Lee Banks (Соавтор), Chris F. (Поддержка/Ревью кода)

Раскрытие ИИ: Claude Code использовался для написания тестовых файлов, тестовых данных и проверки безопасности кода. Все правки были вручную проверены одним из участников.

Описание

Один статически слинкованный Go-бинарник, который классифицирует подверженность Linux-хоста уязвимости CVE-2026-31431.

Инструмент является пассивным. Он не эксплуатирует ошибку. Механизм-проба (см. заявление о безопасности ниже) выполняет ровно два системных вызова и никогда не затрагивает уязвимый путь выполнения кода.


Что он проверяет

СигналИсточникФлаг
Версия ядра против исправления в апстримеuname(2)--kernel-version
Упоминание CVE в журнале изменений дистрибутиваapt/rpm/apk или файл changelog.Debian.gz на диске--changelog
Статус модуля algif_aead/proc/modules, modprobe.d, /lib/modules--module
Доступность уязвимой поверхностиsocket(AF_ALG) + bind(authencesn(...))--mechanism
Вкомпилирован в vmlinux/boot/config-$(uname -r) или /proc/config.gz(часть --module)

Если флаги проверок не указаны, выполняются все четыре.


Режимы вывода

РежимТриггерСценарий использования
Стилизованный (по умолчанию)TTY stdout, без --format, без переменной окружения NO_COLORИнтерактивные сессии в оболочке
Обычный текстstdout не TTY, ИЛИ --format=text, ИЛИ NO_COLOR=1, ИЛИ --no-colorСкрипты оболочки, конвейеры
JSON--format=jsonSyslog/SIEM, скрипты оболочки
Тихий--quietТолько код выхода (автоматизация/скрипты)

Принудительный стилизованный вывод при конвейере: cvecheck --pretty | tee report.txt. Принудительный обычный текст в TTY: cvecheck --no-color или NO_COLOR=1 cvecheck.


Заявление о безопасности (механизм-проба)

Проба выполняет ровно два системных вызова: socket(AF_ALG, SOCK_SEQPACKET, 0) и bind(fd, &SockaddrALG{Type:"aead", Name:"authencesn(hmac(sha256), cbc(aes))"}). Затем следует close(fd). Она не выполняет setsockopt для ключа, не выполняет accept, не выполняет sendmsg, не выполняет splice и не создаёт конвейеры. Уязвимый путь выполнения кода требует sendmsg криптографических данных в сочетании с splice из файлового дескриптора, поддерживаемого page-cache; ни одна из этих операций не выполняется, поэтому ошибка не может сработать.

Успешная проба означает, что поверхность доступна. Содержит ли ядро ошибку, определяется сигналами версии ядра и журнала изменений.

Побочный эффект: успешный bind автоматически загружает algif_aead через автозагрузчик модулей ядра. Проверка модуля выполняется до механизм-пробы, поэтому отчёт о состоянии загрузки формируется до пробы. Чтобы полностью подавить автозагрузку, сначала добавьте algif_aead в чёрный список.


Коды выхода

КодЗначение
0PATCHED / NOT_VULNERABLE / MITIGATED / LIKELY_NOT_EXPLOITABLE
2VULNERABLE или MECHANISM_REACHABLE (частичное сканирование, версия ядра не проверялась)
3INCONCLUSIVE (недостаточно сигналов)

Покрытие дистрибутивов

ДистрибутивОпределениеПакет ядраПримечания
Ubuntu / Debian / Mint / Pop!_OSaptlinux-image-$(uname -r)Чтение журнала изменений с диска в первую очередь позволяет избежать хрупкости сети apt changelog для подписанных ядер
RHEL / CentOS / Rocky / Alma / Fedora / Amazon LinuxrpmkernelПоставляется со встроенным algif_aead (CONFIG_..._AEAD=y); митигация через чёрный список неэффективна
Oracle Linuxrpmkernel или kernel-uekUEK определяется по подстроке uek в uname -r
openSUSE / SLESrpmkernel-default
Alpineapklinux-lts / linux-virt / и т.д.Вариант выбирается по суффиксу релиза
Arch / CachyOS / Manjaro / Endeavour / Gentooнетн/дRolling/source: полагается на проверку версии ядра

Развёртывание

Автоматическая установка

Автоматически определяет вашу архитектуру, загружает нужный бинарник в $(pwd) и проверяет его SHA-256 по опубликованному SHA256SUMS:

root@kitploit:~
curl -fsSL https://copyfail.pcdoyle.dev/install.sh | sh

Скрипт завершается с ненулевым кодом при несовпадении контрольной суммы и удаляет повреждённый файл.

Загрузка бинарника (вручную)

Выберите бинарник для архитектуры вашего хоста:

АрхитектураБинарник
Intel/AMD 64-bit (x86_64)cvecheck-linux-x86_64
ARM 64-bit (aarch64)cvecheck-linux-arm64
Intel/AMD 32-bit (i?86)cvecheck-linux-x86

Проверьте перед запуском:

root@kitploit:~
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/cvecheck-linux-x86_64
curl -LO https://github.com/pcdoyle/copy-fail-cve-2026-31431/releases/latest/download/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
chmod +x cvecheck-linux-x86_64

Сборка из исходников

root@kitploit:~
make build  # bin/cvecheck-linux-{x86_64,arm64,x86}
# SCP(SFTP) на сервер:
scp ./bin/cvecheck-linux-x86_64 host:/tmp/  # Менее 4 МБ, статический, без зависимости от glibc

Запуск программы

SSH на хост

root@kitploit:~
# SSH:
ssh <host>
# Запуск бинарника:
/tmp/cvecheck-linux-x86_64  # Удобный для человека стилизованный вывод.
/tmp/cvecheck-linux-x86_64 --format=json # Удобный для скриптов, Syslog и SIEM
/tmp/cvecheck-linux-x86_64 --format=text # Удобный для скриптов и конвейеров

Запуск как удалённая команда SSH

root@kitploit:~
ssh <host> /tmp/cvecheck-linux-x86_64   # При прямом запуске по умолчанию --format=text
ssh <host> /tmp/cvecheck-linux-x86_64 --format=json # Удобный для Syslog/SIEM

Для контейнеров/Chroot:

Смонтируйте корень хоста в доступное для чтения место и передайте --root:

root@kitploit:~
docker run --rm -v /:/host:ro alpine /tmp/cvecheck --root /<host-path>

--root управляет всеми поисками на диске (/etc/os-release, modprobe.d, /lib/modules, /boot/config-*, файлы журналов изменений). Проверки версии ядра и механизм-проба по-прежнему обращаются к работающему ядру через uname(2) и socket(AF_ALG, ...).


Лестница приоритетов

Разрешается в следующем порядке (первое совпадение выигрывает):

  1. PATCHED: Журнал изменений дистрибутива ссылается на ID CVE.
  2. NOT_VULNERABLE: Работающее ядро >= исправленной версии в апстриме.
  3. MITIGATED: algif_aead в чёрном списке и не загружен и не вкомпилирован в vmlinux.
  4. LIKELY_NOT_EXPLOITABLE: AF_ALG недоступен и модуль отсутствует на диске.
  5. MECHANISM_REACHABLE: Поверхность доступна, но версия ядра не проверялась.
  6. VULNERABLE: Ядро в уязвимом диапазоне и механизм доступен.
  7. INCONCLUSIVE: Ни одно из вышеперечисленных не совпало.

Если --mechanism запускается вместе с --kernel-version и оба сигнализируют о проблеме, результатом будет VULNERABLE с подсказкой по устранению.


Подсказки по устранению

  • Дистрибутивы с загружаемыми модулями (Debian, Ubuntu, SUSE, Alpine, Arch): добавьте algif_aead в чёрный список до обновления ядра.
    root@kitploit:~
    echo 'blacklist algif_aead' | sudo tee /etc/modprobe.d/cve-2026-31431.conf
    sudo rmmod algif_aead 2>/dev/null
    
  • Дистрибутивы со встроенным модулем (RHEL, CentOS, Rocky, Alma, Oracle, Amazon): файлы чёрного списка не работают, потому что CONFIG_CRYPTO_USER_API_AEAD=y помещает символ внутрь vmlinux. Только обновление ядра (или live-патч в стиле kpatch) устраняет подверженность. Инструмент это определяет.

Устранение неполадок

СимптомПричинаИсправление
changelog: error="apt: exit status 100 ... Changelog unavailable for linux-signed-amd64"Подписанное ядро Debian/Ubuntu; зеркало apt не предоставляет журнал изменений исходного пакетаОшибка появляется только когда файл на диске отсутствует в дополнение к недоступности зеркала; установите apt-doc или дождитесь зеркала.
module: ... config_src=""Нет читаемой конфигурации ядра (нет /boot/config-*, нет /proc/config.gz, /boot доступен только root)Запустите от root или примите, что BuiltIn не может быть определён. Вердикт всё равно может быть вынесен по другим сигналам.
mechanism: error="EAFNOSUPPORT"Ядро собрано без CONFIG_CRYPTO_USER_API, поэтому хост не уязвим через AF_ALGВердикт будет LIKELY_NOT_EXPLOITABLE.

Источники

  • База данных CVE NIST
  • Официальный сайт Copy.Fail
  • Официальный технический отчёт
  • Уведомление oss-security
  • Отчёт Theori
  • Сводка Bugcrowd
Скачать инструмент