
Auxiliar de postura SSH para CVE-2026-31431 (Copy Fail): inventário do kernel e algif_aead
Auxiliar Bash: descobre hosts (opcionalmente CIDR via nmap) e então faz verificações SSH somente leitura para CVE-2026-31431 (Copy Fail / algif_aead), CVE-2026-31677 / CVE-2026-43077 (heurísticas AF_ALG RX), CVE-2026-23111 (nftables + namespaces de usuário), CVE-2026-23102 (arm64 SVE/SME). Apenas heurísticas — não é um exploit; confirme com seu distribuidor.
Trate como sensível: arquivo de senhas em disco; a saída lista hosts e postura do kernel.
| Componente | Quando |
|---|---|
bash, ssh, sshpass | Sempre |
nmap | Alvos CIDR: necessário para nmap -sn -PS22. Com COPYFAIL_PREAUTH_NMAP=1 (padrão), também nmap -p22 -sV por host após o banner SSH — mais lento, mas ajuda a identificar macOS/Windows. Defina COPYFAIL_PREAUTH_NMAP=0 para pular o nmap por host (você ainda precisa do nmap para uma varredura CIDR). |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsuser:password por linha (apenas o primeiro : separa o usuário da senha).600 obrigatório: sudo chmod 600 /etc/copyfail-credssudo (ou use chown para o seu usuário, mantendo 600).CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR, IP/hostname único, ou caminho para uma lista de hosts (comentários com # são aceitos). Se omitido, usa o padrão do script (veja TARGET= em 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
Saída: apenas stdout (sem arquivo de relatório). Use tee para salvar. Após as linhas por host: === Summary report === (a menos que COPYFAIL_SUMMARY=0) — Confirmed good vs Needs review; hosts que compartilham a mesma linha de resumo são mesclados (rótulos separados por vírgula).
# 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] são heurísticas do script; os campos finais 23111= / 23102= resumem as sondas de nftables/user-ns e arm64 SVE.*-pve / de fornecedor: uname -r pode não corresponder às tuplas do NVD upstream — use avisos de segurança da distro/Proxmox e pacotes de kernel instalados, não apenas este script.echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — veja LICENSE.
| Variável | Padrão | Função |
|---|
CREDS_FILE | /etc/copyfail-creds | arquivo user:password |
COPYFAIL_PREAUTH | 1 | banner SSH TCP/22; pula não-Linux óbvios antes do login |
COPYFAIL_PREAUTH_NMAP | 1 | nmap -p22 -sV extra quando o banner é inconclusivo (mais lento) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = mostra banner truncado em pulos de pré-autenticação |
COPYFAIL_PARALLEL | 24 | Máximo de sondas concorrentes (1 = sequencial) |
COPYFAIL_ORDERED_OUTPUT | 1 | Em paralelo, armazena linhas em buffer na ordem das sondas (0 = intercalado) |
COPYFAIL_PTR_LOOKUP | 1 | DNS reverso IPv4 via getent quando nmap/lista não tem nome |
COPYFAIL_SUMMARY | 1 | Imprime resumo final agrupado (0 = pular) |
COPYFAIL_BANNER_TIMEOUT | 3 | Segundos para aguardar identificação SSH na porta 22 |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout (segundos) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | Se a pré-autenticação não vir banner, pula a tentativa SSH (0 se banners forem muito lentos) |