
Verifica se um sistema Linux é afetado pela CVE-2026-99999 (PwnEscape) e imprime ou aplica a correção de kernel específica da distribuição
Inglês | 한국어
Um único script de shell que verifica se um sistema Linux é afetado pela CVE-2026-99999 ("PwnEscape"). Ele explica o veredito e, em seguida, imprime as etapas de correção para essa distribuição ou aplica o patch e reinicia o sistema para você.
Os dados do fornecedor incorporados no script estão atualizados até 2026-10-20. Os avisos mudam rapidamente, portanto, sempre confirme com o rastreador de segurança da sua distribuição.
| Componente | Pilha IPv4 do kernel Linux (skb_checksum_help → ip_do_fragment) |
| Causa | checksum_start / csum_offset fornecidos pelo cabeçalho virtio-net ou por packet sockets não são validados em relação ao cabeçalho IPv4. A conclusão do checksum pode então sobrescrever o comprimento do cabeçalho já validado (CWE-20). |
| Impacto | VM convidada → host: divulgação de memória do host, travamento do host, execução de código como root no host |
| Gravidade | CVSS 3.1 9.3 Crítica (kernel CNA) · 8.8 Importante (Red Hat) |
| Afetados | Todos os kernels desde 2.6.27 |
| Correção | Commit upstream 6785011f8b16 "ipv4: validate checksum_start before completing checksum" |
| Contorno | Nenhum publicado. A única correção é inicializar um kernel corrigido. |
O principal risco é para hosts de virtualização que executam convidados não confiáveis (KVM/QEMU, Firecracker, Proxmox, hosts de nuvem e VPS). Aplicar patch no kernel de um convidado não protege o host.
| Arquivo | Descrição |
|---|---|
scanner-cve-2026-99999.sh | O scanner, saída em inglês |
scanner-cve-2026-99999_kr.sh | O mesmo scanner, saída em coreano |
Ambos os arquivos contêm a mesma lógica; apenas as mensagens e os comentários diferem.
| Arquivo | SHA-256 | MD5 |
|---|---|---|
scanner-cve-2026-99999.sh | 65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 | 8ab38c22ed737986775f6f64f5a800aa |
scanner-cve-2026-99999_kr.sh | 05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 | 6223f8db3c1a8dec361fe301a7193ff4 |
Verifique o arquivo antes de executá-lo:
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
echo "8ab38c22ed737986775f6f64f5a800aa scanner-cve-2026-99999.sh" | md5sum -c
Esses valores são para os arquivos da versão v1.0.0. Os arquivos em commits posteriores podem ser diferentes.
A partir da versão (recomendado):
curl -LO https://github.com/sqzer-x/cve-2026-99999-scanner/releases/download/v1.0.0/scanner-cve-2026-99999.sh
echo "65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 scanner-cve-2026-99999.sh" | sha256sum -c
sudo bash scanner-cve-2026-99999.sh
Ou do repositório:
git clone https://github.com/sqzer-x/cve-2026-99999-scanner.git
cd cve-2026-99999-scanner
sudo bash scanner-cve-2026-99999.sh
Execute-o no host, não dentro de um contêiner. A verificação funciona como usuário comum; root (via sudo) só é necessário para a opção 1 do menu.
Detecta a distribuição (/etc/os-release) e o kernel em execução (/proc).
Avalia o kernel:
Verifica se há um livepatch aplicado (kpatch, Canonical Livepatch, SUSE kernel-livepatch, Ksplice), um kernel corrigido que está instalado mas ainda não foi inicializado, e se o kernel do próximo boot está corrigido.
Relata indicadores de exposição: /dev/kvm, vhost_net, dispositivos TUN/TAP, processos de VM (QEMU, Firecracker, kvm do Proxmox, ...), configurações de user namespace.
Se o sistema não estiver seguro, oferece um menu:
1. Patch now (install the fixed kernel and reboot)
2. Patch manually later (show the commands)
3. Exit
Quando não é executado a partir de um terminal (cron, pipes, saída redirecionada para um arquivo), nenhum menu é exibido e ele se comporta como a opção 2.
| Opção | Descrição |
|---|---|
-l, --list | Exibe apenas a tabela de status por distribuição |
--no-color | Desativa a saída colorida (NO_COLOR também é respeitado) |
--os-release FILE | Usa este arquivo os-release em vez de /etc/os-release |
--uname-r STRING | Avalia esta versão de kernel em vez da em execução (ignora verificações locais) |
--uname-v STRING | String de build do kernel (uname -v), necessária para kernels Debian com --uname-r |
-h, --help | Exibe a ajuda |
| Código | Significado |
|---|---|
| 0 | Seguro (corrigido, não afetado ou livepatched) |
| 1 | Vulnerável — há um kernel corrigido disponível |
| 2 | Kernel corrigido instalado — reinicialização necessária |
| 3 | Vulnerável — ainda sem correção do fornecedor, ou fim de vida |
| 4 | Indeterminado (kernel desconhecido, em execução dentro de um contêiner, ...) |
Os códigos de saída tornam possível utilizá-lo a partir de gerenciamento de configuração ou monitoramento:
bash scanner-cve-2026-99999.sh --no-color > report.txt; echo "exit code: $?"
O veredito pode ser calculado para valores coletados em outro lugar, por exemplo, de um contêiner ou de um inventário:
# On the target: uname -r ; uname -v ; cat /etc/os-release > os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 5.14.0-570.12.1.el9_6.x86_64 --os-release os-release.txt
bash scanner-cve-2026-99999.sh --uname-r 6.1.0-38-amd64 \
--uname-v '#1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-08-02)' --os-release os-release.txt
bash scanner-cve-2026-99999.sh --list imprime a mesma tabela.