
Verificador somente leitura para CVE-2026-31431 (root local via algif_aead). Relata o estado do kernel/módulo e sugere mitigações.
Verificador somente leitura para a vulnerabilidade local-root do algif_aead (CVE-2026-31431).
Verifica a configuração do kernel, o estado do módulo, a acessibilidade do socket AF_ALG e quaisquer
mitigações que você tenha implementado, e então exibe um veredito. Ele não executa
código de exploit.
Complemento ao dirty-frag-check (CVE-2026-43284 / CVE-2026-43500).

Atenção: isto é uma heurística. Um veredito verde não é garantia. Compare com o aviso da sua distribuição antes de considerar um host seguro. MIT, sem garantias.
curl -fsSL https://github.com/haydenjames/CVE-2026-31431-check/releases/latest/download/cve-2026-31431.sh | bash
Leia-o primeiro se não confiar em encaminhar para o bash:
curl -fsSLO https://github.com/haydenjames/CVE-2026-31431-check/releases/latest/download/cve-2026-31431.sh
less cve-2026-31431.sh
chmod +x cve-2026-31431.sh && ./cve-2026-31431.sh
Use uma tag de release para controle de mudanças: https://raw.githubusercontent.com/haydenjames/CVE-2026-31431-check/v1.0.3/cve-2026-31431.sh.
-q para saída de frota em uma linha. -h para ajuda. Código de saída 0 ok, 1 vulnerável, 2 desconhecido.
-q imprime uma linha por host, então você pode encaminhá-lo por qualquer executor
remoto que já use:
# parallel-ssh
parallel-ssh -h hosts.txt -i 'bash -s -- -q' < cve-2026-31431.sh
# ansible
ansible all -m script -a "cve-2026-31431.sh -q"
Os códigos de saída (0 ok, 1 vulnerável, 2 desconhecido) também funcionam se suas ferramentas agregarem por status.
bash 4+, além dos usuais awk/grep/sed/lsmod/modprobe. Se python3
estiver disponível, ele também testará a acessibilidade do socket AF_ALG; caso contrário, essa verificação é
ignorada. A verificação em si não precisa de root. Aplicar a mitigação precisa.
algif_aead. Embutido, módulo carregável, carregado ou ausente. Lê
/boot/config-* ou /proc/config.gz, com fallback para lsmod.
1b. Estado do authencesn. De acordo com o aviso upstream, este é o módulo
que realmente contém o bug — algif_aead é um dos caminhos de acesso,
IPsec é outro. Detectado via lsmod/modinfo e configuração.modprobe -n -v. Também sinaliza
o truque quebrado do DefaultRestrictAddressFamilies do systemd [Manager]
que tem circulado — essa diretiva só funciona em units, não
em system.conf.d. Informa o status do SELinux e do AppArmor.algif_aead está embutido. Veredito de melhor esforço; ele depende dos códigos de saída do dnf check-update, que podem ser diferentes de zero por motivos não relacionados (rede, metadados desatualizados). Não presuma que você está esperando sem antes verificar o rastreador da sua distribuição.De acordo com o aviso upstream,
o bug está na verdade no módulo de criptografia authencesn — algif_aead é
apenas um dos caminhos de acesso. Coloque ambos na blacklist para ficar seguro:
sudo tee /etc/modprobe.d/disable-cve-2026-31431.conf <<'EOF'
install algif_aead /bin/false
install authencesn /bin/false
EOF
sudo rmmod authencesn algif_aead 2>/dev/null || true
Se o rmmod disser "module is in use", algo na máquina está usando ativamente
AF_ALG ou IPsec (algumas VPNs, criptografia de disco, ferramentas de criptografia no espaço do usuário).
Não force a remoção. Aplique o patch e reinicie.
Se o código vulnerável estiver compilado no seu kernel, a blacklist não vai ajudar. Só uma atualização do kernel corrige isso.
AlmaLinux 8, AlmaLinux 9.7, CentOS 7 (TuxCare ELS), Ubuntu 22.04, Ubuntu 24.04.
Relatos de bugs que moldaram a v1.0.1:
kmod no Ubuntu não estava sendo detectada, causando falsos vereditos de VULNERABLE em hosts Ubuntu corrigidos.MIT — veja LICENSE.