
Audita e endurece sistemas Linux contra escalonamento local de privilégios via AF_ALG (CVE-2026-31431), verificando a exposição da API de criptografia do kernel, restringindo módulos e fornecendo scripts de restauração.
Esta ferramenta implementa Bloqueio Estrutural para mitigar a CVE-2026-31431 renomeando fisicamente os módulos do kernel e purgando-os da memória. Antes de usar, esteja ciente dos seguintes riscos arquiteturais:
/lib/modules/ novo, anulando a obstrução anterior.AF_ALG (API de Criptografia do Kernel) pode quebrar aplicativos ou serviços específicos que dependem de aceleração de hardware em nível de kernel (por exemplo, VPNs especializadas, utilitários de criptografia de disco ou ferramentas de segurança personalizadas).[cite: 3]Use por sua conta e risco. Sempre verifique as funções críticas do seu sistema após executar solution.sh.[cite: 3]
Um kit de ferramentas para descobrir, diagnosticar e conter vetores de LPE (Escalação Local de Privilégios) através da API de Criptografia do Kernel Linux (AF_ALG).
A ferramenta usa Bloqueio Estrutural para abordar a CVE-2026-31431 renomeando módulos do kernel e purgando-os da memória. Os principais riscos arquiteturais incluem:
/lib/modules/ novo, anulando a obstrução anterior.Use por sua conta e risco.
Este repositório fornece dois scripts que formam um fluxo de trabalho diagnosticar → conter → verificar contra ataques de escalada de privilégios via AF_ALG (socket(38, 5, 0)):
check.sh — Auditoria de postura de segurança em múltiplas camadas (executa sem privilégios)solution.sh — Remove à força os módulos AF_ALG da memória + verifica arquivos de módulo físicos (requer root)restore.sh — Recarrega os módulos AF_ALG e restaura o sistema ao estado anterior ao solution.sh (requer root)./check.sh
sudo ./solution.sh
sudo ./restore.sh
restore.sh reverte os efeitos do solution.sh recarregando os módulos do kernel AF_ALG (af_alg, algif_rng, algif_aead, algif_skcipher, algif_hash). Se o arquivo de módulo físico (af_alg.ko.xz) foi renomeado ou removido, o script avisará e solicitará a restauração manual antes de tentar carregar os módulos.
Executar solution.sh em um sistema ativo que usa AF_ALG (por exemplo, um sistema com IPsec, dm-crypt/LUKS ou qualquer offload de criptografia por hardware) quebrará instantaneamente todas as operações de criptografia do kernel. Isso inclui:
algif_*O script força a remoção dos módulos do kernel AF_ALG. As operações de criptografia do kernel falharão até a reinicialização. Este script destina-se apenas a sistemas isolados, não-produtivos ou descartáveis para fins de teste e análise. Não o execute em produção ou infraestrutura crítica.
check.sh não requer dependências além de shell POSIX e /proc//syssolution.sh requer privilégios de rootrestore.sh requer privilégios de rootaf_alg_block.so requer privilégios de root para instalação via /etc/ld.so.preloadEste POC foi testado no WSL2. Esteja ciente do seguinte:
wsl --shutdown). Isso inclui alterações de estado dos módulos do kernel do solution.sh, renomeações de arquivos, resultados do check.sh e quaisquer modificações locais de arquivos neste repositório..wslconfig, /etc/wsl.conf ou um script de inicialização automática (por exemplo, /etc/rc.local) separadamente.Para fechar definitivamente o vetor de ataque AF_ALG:
Coloque o módulo do kernel na lista negra (mais confiável):
echo "blacklist af_alg" | sudo tee /etc/modprobe.d/af_alg-blacklist.conf
Ou renomeie o arquivo físico:
sudo mv /lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz \
/lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz.bak
Desabilite o AF_ALG via sysctl:
sudo sysctl -w net.core.af_alg_disabled=1
Bloqueie a criação de socket AF_ALG via política SELinux / AppArmor
Desabilite namespaces de usuário sem privilégios (ambientes de contêiner):
sudo sysctl -w kernel.unprivileged_userns_clone=0
Bloqueie o AF_ALG na chamada de sistema socket() via LD_PRELOAD (solução para WSL2):
# Instalação em todo o sistema (requer root)
echo /caminho/absoluto/para/af_alg_block.so | sudo tee -a /etc/ld.so.preload
Uma biblioteca compartilhada pré-compilada (af_alg_block.so) está incluída no repositório. Ela intercepta e retorna quando o domínio é (38). Todas as outras chamadas de socket passam para a implementação real inalteradas.
MIT
| Verificação | O que examina | Severidade |
|---|
| Contexto do Processo | UID/GID atual e capacidades efetivas | Baixa |
| Socket de Criptografia AF_ALG | Acessibilidade da API de Criptografia do Kernel via socket(AF_ALG, ...) | Alta |
| kptr_restrict | Visibilidade de ponteiros do kernel para o espaço do usuário | Média |
| dmesg_restrict | Restrição de acesso ao buffer de anel do kernel | Média |
| SELinux | Estado Impondo / Permissivo / Desabilitado | Média |
| /proc hidepid | Se /proc oculta informações de outros processos | Baixa |
socket(2)EAFNOSUPPORTAF_ALGEsta abordagem destina-se principalmente ao WSL2, onde a semântica de usuário único e o comportamento de redefinição na reinicialização tornam o LD_PRELOAD em todo o sistema prático. Em sistemas Linux tradicionais multiusuário, prefira o método 1 (lista negra de módulos) — a injeção via /etc/ld.so.preload afeta todos os processos do sistema e pode quebrar silenciosamente serviços dependentes de AF_ALG.
Nota: Requer glibc (não musl). /etc/ld.so.preload requer root para modificar. A remoção é feita excluindo a linha correspondente do arquivo.