
Scanner de triagem local apenas para detecção da Fragnesia CVE-2026-46300 no kernel Linux: classifica um kernel em execução ou instalado em relação às builds corrigidas upstream e da distro. Sem payloads, sem rede.
fragnesia-scannerTriagem local para o Fragnesia, a escalada de privilégios no kernel Linux CVE-2026-46300. Forneça uma versão de kernel que você possui, e ele informa se essa build ainda está vulnerável, além de detectar as armadilhas que fazem uma verificação de versão mentir. Ele nunca acessa a rede, nunca carrega um exploit, nunca dispara a falha.
A falhaDetalhe | Valor |
|---|---|
CVE | CVE-2026-46300, apelidada de Fragnesia, uma variante de Dirty Frag |
Bug | skb_try_coalesce() descarta o marcador de fragmento compartilhado, então a entrada ESP-in-TCP descriptografa no local sobre páginas do page cache (CWE-456) |
Impacto | Um usuário local reescreve o conteúdo em cache de arquivos que ele pode apenas ler. A prova de conceito pública tem como alvo a cópia em cache de /usr/bin/su, então a próxima execução desse programa executa código do atacante como root |
Severidade | 7.8 alta, pontuada pelo CNA do kernel e pelo NVD (AV:L/AC:L/PR:L/UI:N) |
Exploração | Adicionada ao CISA KEV em 2026-10-28, prazo federal 2026-10-31, sinalizada para triagem forense. A entrada da CISA diz que pode ser encadeada com as falhas PHP2Shell para implantar webshells PHP e executar comandos como root |
A cadeia | A Dream Security relatou a cadeia que comprometeu 25 appliances de firewall, incluindo sistemas em uma rede afiliada ao governo dos EUA: PHP2Shell obtém execução de código como o usuário web, Fragnesia a transforma em root, mesmo sob confinamento SELinux, porque nunca solicita acesso de escrita ao sistema de arquivos |
O Fragnesia não é um ataque remoto. Ninguém o usa contra um servidor apenas pela rede. Ele precisa de código já em execução na máquina, que é exatamente o que um webshell, um login SSH roubado ou um job de CI comprometido fornece. É por isso que ele se combina com o foxcornlab/php2shell-scanner: avalie o lado PHP lá, avalie o lado do kernel aqui.
Versões corrigidasUpstream stable (commit de correção f84eca581739)Linha | Corrigida em |
|---|---|
7.0 | 7.0.10 |
6.18 | 6.18.33 |
6.12 | 6.12.91 |
6.6 | 6.6.141 |
6.1 | 6.1.174 |
5.15 | 5.15.208 |
5.10 | 5.10.257 |
7.1 e posteriores | Não afetada |
Anterior a 3.9 | Não afetada, conforme o registro do CVE |
Qualquer outra linha (ex.: 6.17, 6.5) | Nenhuma versão corrigida upstream listada, migre para uma linha corrigida |
Ubuntu (builds corrigidas exatas)Release | Build corrigida |
|---|---|
26.04 | 7.0.0-22.22 |
25.10 | 6.17.0-35.35 |
24.04 | 6.8.0-124.124 |
22.04 | 5.15.0-181.191 |
20.04 kernel 5.4 padrão | Listado como não afetado pelo Ubuntu |
20.04 kernel 5.15 HWE | Apenas Ubuntu Pro, verifique seu aviso do Pro |
Debian (builds corrigidas exatas)Release | Build corrigida |
|---|---|
13 trixie | 6.12.90-1 (DSA-6295-1) |
12 bookworm | 6.1.174-1 (DSA-6306-1) |
11 bullseye | 5.10.257-1 (DLA-4606-1) |
RHEL e derivadosPor stream, consulte RHSA-2026:19521 e posteriores. Esta ferramenta avalia hosts RHEL com base na correção upstream e indica o aviso, porque a Red Hat não publica um único número de versão contra o qual esta ferramenta possa avaliar.
Onde as fontes divergemDuas divergências, ambas seguidas deliberadamente. Um texto secundário sobre a atualização do KEV de 28 de outubro imprime 2.7 para este CVE; essa é a pontuação do VMware ESX da mesma atualização, trocada para a entrada do kernel. NVD, o CNA do kernel e a Red Hat dizem todos 7.8, então esta ferramenta segue 7.8. Segundo: o intervalo do NVD para a linha 5.10 vai até 5.10.257, enquanto o registro upstream e o Debian listam 5.10.257-1 como a build corrigida. Esta ferramenta segue o upstream e o Debian e avalia 5.10.257 como corrigida.
Armadilha 1: uname oculta o número de uploadA compilação corrigida do Ubuntu para 24.04 é 6.8.0-124.124. O comando uname -r imprime 6.8.0-124-generic. O número de upload após o segundo ponto nunca aparece na saída do uname, portanto um kernel em execução cujo ABI corresponde ao ABI corrigido não pode ser considerado limpo apenas com base no uname. Esta ferramenta classifica esse caso como UNKNOWN, não como limpo, e indica que você verifique a versão do pacote linux-image instalado. Um ABI inferior ao ABI corrigido é definitivamente VULNERABLE; um ABI superior é FIXED. Passe --package-version com a versão do dpkg para obter uma classificação definitiva.
Armadilha 2: instalado não é inicializadoUm pacote de kernel corrigido que está instalado mas não em execução não faz nada. --local compara o kernel em execução com o pacote de kernel instalado mais recente e informa isso claramente quando diferem, e sinaliza /var/run/reboot-required quando uma atualização de kernel está preparada.
Armadilha 3: a evidência vive na memória, não no discoO Fragnesia grava no page cache do kernel e nunca toca o disco. Uma reinicialização limpa o backdoor e a evidência juntos. Se você suspeitar que um host foi afetado, investigue antes de reiniciar qualquer coisa: compare uma leitura normal de um arquivo com uma leitura direta que ignora o cache, e colete o que precisar primeiro. Ferramentas de integridade de arquivos que apenas calculam hash dos arquivos armazenados após uma reinicialização não detectarão isso.
O que ele verificaUma versão de kernel fornecida por você (--kernel), classificada de acordo com a tabela de correções upstreamUma versão do Ubuntu (--ubuntu 24.04) com a armadilha do ABI acima, ou --package-version para uma classificação definitivaUma versão do Debian (--debian bookworm) a partir da versão do pacote instalado (as strings do Debian uname carregam apenas um número de ABI, portanto são classificadas como UNKNOWN por si só)Este host (--local): kernel em execução, os-release, pacote de kernel instalado mais recente, módulos ESP carregados (esp4, esp6, rxrpc), flag de reboot-required e se o PHP está instalado (classificado separadamente, veja abaixo)Presença do módulo ESP: um kernel vulnerável com esp4/esp6 carregados tem o caminho acessível ativo neste momentoUso# grade one version
python3 fragnesia_scanner.py --kernel 6.6.140
# Ubuntu 24.04, uname only (ABI match -> UNKNOWN, upload hidden)
python3 fragnesia_scanner.py --ubuntu 24.04 --kernel 6.8.0-124-generic
# Ubuntu 24.04, definitive grade from the installed package
python3 fragnesia_scanner.py --ubuntu 24.04 --kernel 6.8.0-124-generic --package-version 6.8.0-124.124
# Debian bookworm from the installed package
python3 fragnesia_scanner.py --debian bookworm --package-version 6.1.174-1
# this host, everything at once
python3 fragnesia_scanner.py --local
# machine-readable output for fleets
python3 fragnesia_scanner.py --local --json
Códigos de saída: 0 = nada vulnerável encontrado, 2 = achado vulnerável, 1 = erro de varredura. UNKNOWN não altera o código de saída, mas não é considerado limpo.
A metade PHP da cadeiaSe --local encontrar PHP no host, ele informa isso e aponta para foxcornlab/php2shell-scanner para a classificação de PHP. Esta ferramenta deliberadamente não classifica PHP por conta própria: esse scanner já é responsável pela tabela de correções PHP 8.2.35, 8.3.36, 8.4.27 e 8.5.12, e uma ferramenta responsável por uma tabela de correções é melhor do que duas ferramentas divergindo.
Mitigação se você não puder aplicar o patch hojeBloqueie os módulos esp4 e esp6 com uma regra de instalação do modprobe e descarregue-os. Isso desativa o IPsec no host, portanto não use isso em gateways VPN. É uma medida paliativa, não uma correção: aplique o patch no kernel e reinicie nele.