
Bash script to assess Linux host exposure to CVE-2026-31431, check kernel module status, apply mitigation by blocking algif_aead, and update kernel packages.
Este repositorio documenta um script Bash para verificar a exposicao a CVE-2026-31431 em hosts Linux, com foco em Ubuntu, e aplicar uma mitigacao simples baseada no bloqueio do modulo algif_aead.
O script opera em tres modos:
--check: coleta informacoes do host e classifica o status.--mitigate: cria uma regra de modprobe para bloquear o modulo vulneravel e tenta descarrega-lo.--update: executa atualizacao de pacotes de kernel via apt.CVE-2026-31431, tambem chamada publicamente de , e uma vulnerabilidade de escalacao local de privilegio no kernel Linux associada ao modulo , que implementa a interface AEAD da API criptografica em userspace via .
Copy Failalgif_aeadAF_ALGEm termos praticos, o problema permite que um usuario local com baixa privilegio explore uma falha logica no caminho de tratamento de memoria desse subsistema e evolua para comprometimento de integridade do sistema. A classificacao publicada pelo kernel.org e refletida no NVD e CVSS 7.8, com vetor AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, ou seja: o ataque exige execucao local, mas tem alto impacto em confidencialidade, integridade e disponibilidade.
2017, quando uma otimizacao "in-place" foi adicionada ao algif_aead.22 de abril de 2026.Copy Fail e prova de conceito publica, ocorreu em 29 de abril de 2026.1 de abril de 2026, antes da divulgacao ampla aos usuarios finais.De acordo com os avisos tecnicos publicados, a falha explora a combinacao entre:
AF_ALG do kernelalgif_aeadsplice()O resultado pratico e a possibilidade de um processo local realizar uma escrita controlada de poucos bytes em paginas do page cache de arquivos legiveis. Isso e suficiente para transformar um acesso local restrito em escalacao para root em cenarios favoraveis.
O risco real nao esta apenas em "ser Linux vulneravel", mas em permitir que qualquer codigo local de baixa confianca use esse caminho do kernel. Em ambiente corporativo, isso costuma significar maior exposicao em:
Se um invasor ja obteve algum nivel de execucao local, mesmo sem root, essa CVE pode ser o passo seguinte para tomar o host. Na pratica, isso amplia o risco de:
algif_aeadO algif_aead faz parte da interface de criptografia do kernel para espaco de usuario (AF_ALG). Ele permite que aplicacoes usem primitivas criptograficas do kernel por sockets, em especial operacoes do tipo AEAD (Authenticated Encryption with Associated Data).
Esse modulo normalmente nao e essencial para a maior parte das cargas comuns de servidor. Segundo a orientacao publicada pela CERT-EU, desativar algif_aead como mitigacao temporaria:
dm-crypt ou LUKSkTLSIPsec/XFRMOpenSSL, GnuTLS, NSS ou SSH em uso padraoPor outro lado, a desativacao pode afetar:
afalgAF_ALG diretamenteaead, skcipher ou hash via kernel crypto APIEm outras palavras: para a maioria dos hosts corporativos, bloquear o modulo tende a ter baixo impacto. Em appliances, stacks customizadas de criptografia ou software altamente otimizado, o impacto deve ser validado antes.
Bloquear o modulo reduz a superficie de ataque imediatamente, mas tem trade-offs:
AF_ALG podem falhar ao inicializar ou perder aceleracao criptografica via kernelPor isso, em ambiente produtivo, o ideal e aplicar a mitigacao com janela controlada e validacao minima das aplicacoes criticas.
A mitigacao por blacklist e apenas temporaria. A correcao definitiva e:
Medidas adicionais recomendadas:
AF_ALG via seccomp em containers e pipelines, quando aplicavelafalg ou da crypto API do kernelO script inspeciona:
/etc/os-releasealgif_aeadmodprobe/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run, quando disponivelCom base nisso, ele retorna uma classificacao como:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWNDe forma resumida:
PATCHED_OR_NOT_AFFECTED.algif_aead nao existir no kernel atual, o status tende a ser LIKELY_NOT_VULNERABLE.MITIGATED.VULNERABLE_MODULE_LOADED.POTENTIALLY_VULNERABLE.modinfomodprobelsmodawkgrephostnameunameapt-get para o modo --updatesudo quando executado sem rootpro opcionalmente, para enriquecer a analise em UbuntuSe o arquivo do script estiver, por exemplo, como check_cve_2026_31431.sh:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
Exemplo de saida:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
Exemplo:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
Essa saida e util para integracao com automacao, inventario ou pipelines de compliance.
O modo --mitigate cria o arquivo:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
Com o conteudo funcional:
install algif_aead /bin/false
blacklist algif_aead
Depois disso, o script tenta remover o modulo da memoria com:
modprobe -r algif_aead
Uso:
./check_cve_2026_31431.sh --mitigate
Se o usuario nao for root, o script tentara usar sudo.
O modo --update executa:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
Uso:
./check_cve_2026_31431.sh --update
Esse modo tenta atualizar componentes de kernel em sistemas baseados em Debian/Ubuntu. Em outros cenarios, a etapa pode nao ser aplicavel.
./check_cve_2026_31431.sh --help
Saida:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected e fix_available depende da presenca do comando pro.--update usa padroes de pacotes voltados a Ubuntu/Debian e pode nao cobrir todos os kernels customizados.--check para avaliar o host.--mitigate.--update ou aplicar a atualizacao oficial do fornecedor.--check --json para validar o estado final e registrar evidencias.Para melhorar a publicacao do repositorio, o ideal e salvar o script com um nome claro, por exemplo:
check_cve_2026_31431.sh
Material organizado e publicado com creditos para SEC17.
Site oficial:
https://sec17.com