
Вспомогательный инструмент оценки защищённости SSH для CVE-2026-31431 (Copy Fail): инвентаризация ядра и algif_aead
Bash-помощник: обнаружение хостов (опционально CIDR через nmap), затем SSH-проверки только для чтения для CVE-2026-31431 (Copy Fail / algif_aead), CVE-2026-31677 / CVE-2026-43077 (эвристики AF_ALG RX), CVE-2026-23111 (nftables + пользовательские пространства имён), CVE-2026-23102 (arm64 SVE/SME). Только эвристики — не эксплойт; подтверждайте у своего вендора.
Считайте конфиденциальным: файл с паролями на диске; в выводе перечисляются хосты и состояние ядра.
| Компонент | Когда |
|---|---|
bash, ssh, sshpass | Всегда |
nmap | Цели CIDR: требуется для nmap -sn -PS22. При COPYFAIL_PREAUTH_NMAP=1 (по умолчанию) также nmap -p22 -sV для каждого хоста после SSH-баннера — медленнее, но помогает обнаружить macOS/Windows. Установите COPYFAIL_PREAUTH_NMAP=0, чтобы пропустить nmap для каждого хоста (nmap всё равно нужен для CIDR-сканирования). |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsuser:password в строке (только первый : разделяет пользователя и пароль).600: sudo chmod 600 /etc/copyfail-credssudo (или chown на своего пользователя, режим останется 600).CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR, одиночный IP/имя хоста или путь к списку хостов (комментарии # допустимы). Если цель опущена, используется значение по умолчанию из скрипта (см. TARGET= в copyfail_scan.sh).
chmod +x copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh 192.168.1.0/24
CREDS_FILE=~/creds ./copyfail_scan.sh ./hosts.txt
Вывод: только stdout (файла отчёта нет). Для сохранения используйте tee. После строк по хостам: === Summary report === (если не задан COPYFAIL_SUMMARY=0) — Подтверждено исправно против Требует проверки; хосты с одинаковой строкой сводки объединяются (метки через запятую).
# Example: no per-host nmap, sequential
COPYFAIL_PREAUTH_NMAP=0 COPYFAIL_PARALLEL=1 sudo ./copyfail_scan.sh 192.168.54.93
31431 PATCHED, 31431 VULN - MITIGATED, 31431 NO algif_aead - VERIFY, [SKIP] / [SKIP - PRE-AUTH] — это эвристики скрипта; хвостовые поля 23111= / 23102= обобщают результаты проверок nftables/user-ns и arm64 SVE.*-pve / вендорские ядра: uname -r может не совпадать с кортежами NVD из апстрима — используйте бюллетени безопасности дистрибутива/Proxmox и установленные пакеты ядра, а не только этот скрипт.echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — см. LICENSE.
| Переменная | По умолчанию | Назначение |
|---|
CREDS_FILE | /etc/copyfail-creds | файл user:password |
COPYFAIL_PREAUTH | 1 | SSH-баннер TCP/22; пропуск заведомо не-Linux хостов до входа в систему |
COPYFAIL_PREAUTH_NMAP | 1 | Дополнительный nmap -p22 -sV, когда баннер неоднозначен (медленнее) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = показывать усечённый баннер при пропусках pre-auth |
COPYFAIL_PARALLEL | 24 | Максимум одновременных проверок (1 = последовательно) |
COPYFAIL_ORDERED_OUTPUT | 1 | При параллельной работе буферизовать строки в порядке проверок (0 = вперемешку) |
COPYFAIL_PTR_LOOKUP | 1 | Обратный DNS для IPv4 через getent, когда в nmap/списке нет имени |
COPYFAIL_SUMMARY | 1 | Печатать сгруппированную итоговую сводку (0 = пропустить) |
COPYFAIL_BANNER_TIMEOUT | 3 | Секунды ожидания SSH-идентификации на порту 22 |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout (секунды) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | Если pre-auth не видит баннер, пропустить попытку SSH (0, если баннеры очень медленные) |