
Автоматизированный сканер и помощник по исправлению для CVE-2026-31431, обнаруживающий уязвимые Linux-хосты через SSH, проверяющий версии ядра и применяющий обновления ядра или временные меры смягчения на нескольких дистрибутивах.
Copy Fail — это автоматический сканер безопасности и помощник по патчам для обнаружения и устранения уязвимости CVE-2026-31431 (Linux Kernel algif_aead Local Privilege Escalation) в вашей Linux-инфраструктуре.
CVE-2026-31431 — это уязвимость локального повышения привилегий (LPE) в модуле ядра Linux algif_aead (Asynchronous Cipher Interface for AEAD). Данная уязвимость позволяет локальному пользователю повысить свои привилегии до уровня root.
Инструмент помогает:
Примечание: Инструмент предназначен только для внутреннего аудита и установки патчей системными администраторами. Используйте его только на системах, которыми вы владеете или на которые у вас есть разрешение.

algif_aead (загружен/не загружен)Автоматическое обновление ядра на уязвимых хостах через менеджер пакетов:
Опция: Автоматическая перезагрузка после установки патча
algif_aead через конфигурацию modprobe.dБаза данных версий ядра с установленными патчами для:
paramiko>=3.0.0 # SSH library
rich>=13.0.0 # Beautiful terminal UI
git clone https://github.com/gagaltotal/cve-2026-31431-copy-fail.git
cd cve-2026-31431-copy-fail
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
или установка вручную:
pip install paramiko>=3.0.0 rich>=13.0.0
python3 copyfail_scanner.py --help
# Сканирование подсети с SSH-ключом
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH_TO_KEY>
# Сканирование нескольких конкретных хостов
python3 copyfail_scanner.py --hosts <IP1>,<IP2>,<IP3> --user <USERNAME> [--password <PASSWORD>]
# Сканирование + автоматическая установка патчей
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --patch
# Сканирование + временные меры
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --mitigate
| Опция | Описание | Пример |
|---|---|---|
--subnet | Целевая подсеть CIDR (взаимоисключающе с --hosts) | --subnet 192.168.1.0/24 |
--hosts | Список IP через запятую (взаимоисключающе с --subnet) | --hosts 192.168.1.10,192.168.1.20 |
--user | SSH-имя пользователя (обязательно) | --user root |
--password | SSH-пароль (необязательно, используйте, если нет ключа) | --password secret123 |
--key | Путь к приватному SSH-ключу | --key ~/.ssh/id_rsa |
--port | SSH-порт (по умолчанию: 22) | --port 2222 |
--threads | Количество параллельных потоков (по умолчанию: 30) | --threads 50 |
--patch | Автоматическое обновление ядра на уязвимых хостах | --patch |
--reboot | Автоматическая перезагрузка после установки патча (используйте с --patch) | --patch --reboot |
--mitigate | Применить временные меры (отключить algif_aead) | --mitigate |
--output | Экспорт результатов сканирования в JSON-файл | --output hasil.json |
--yes | Пропустить запрос подтверждения перед патчингом/мерами | --yes |
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa
Вывод: Отображает таблицу результатов сканирования и сводку
python3 copyfail_scanner.py \
--hosts 10.0.1.5,10.0.1.6,10.0.1.7 \
--user admin \
--password my_password123
python3 copyfail_scanner.py \
--subnet 172.16.0.0/16 \
--user root \
--key ~/.ssh/id_rsa \
--mitigate
Действие: Сканирует все хосты, затем отключает модуль algif_aead на уязвимых хостах (запрашивает подтверждение)
python3 copyfail_scanner.py \
--subnet 192.168.0.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--patch
Действие: Обновляет ядро, но не перезагружает автоматически (требуется ручная перезагрузка)