
Repositório de pesquisa para CVE-2026-80844 (DirtyAH6), uma escalada de privilégios local no kernel Linux via IPv6 AH6/XFRM, com PoC, análise de causa raiz e de patch.
DirtyAH6
CVE-2026-80844 é uma vulnerabilidade do kernel Linux que afeta o subsistema IPv6 Authentication Header (AH6) / XFRM.
A vulnerabilidade é causada por validação insuficiente do campo segments_left
do IPv6 Routing Header, podendo resultar em uma operação de memória fora dos
limites e corrupção de memória do kernel.
Este repositório destina-se apenas a pesquisa de segurança autorizada, análise de vulnerabilidades, CTFs e testes defensivos.
Não utilize esta pesquisa contra sistemas que você não possui ou para os quais não possui permissão explícita de teste.
A vulnerabilidade existe no caminho de processamento do IPv6 AH6.
O código afetado realiza manipulação do routing header através de:
net/ipv6/ah6.c
Especificamente, a lógica vulnerável envolve:
ipv6_rearrange_rthdr()
A função não validava adequadamente a relação entre:
hdrlen
e:
segments_left
Um atacante capaz de fornecer um pacote IPv6 especialmente construído pode, portanto, fazer com que o kernel opere sobre memória fora dos limites esperados do routing header.
Isso pode levar a:
Pacote IPv6 malformado
│
▼
Processamento AH6 / XFRM
│
▼
Estado inválido do routing header
│
▼
Operação de memória fora dos limites
│
▼
Corrupção de memória do kernel
│
▼
Potencial escalação de privilégios
O problema fundamental é a validação insuficiente do valor segments_left do
IPv6 Routing Header.
Conceitualmente, a condição vulnerável pode ser representada como:
segments_left > endereços disponíveis no routing header
O kernel deve garantir que o número de segmentos solicitado pelo routing header seja consistente com o comprimento real do cabeçalho antes de manipular os dados de endereço associados.
Sem essa validação, operações de memória subsequentes podem operar além dos limites válidos do buffer.
A exploração bem-sucedida pode permitir que um atacante com as capacidades e o ambiente local necessários corrompa a memória do kernel.
As consequências potenciais incluem:
A explorabilidade exata depende da configuração do kernel, dos namespaces e capacidades disponíveis, e de outras condições ambientais.
net/ipv6/ah6.c
Processamento relevante:
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
O cenário problemático envolve metadados inconsistentes do routing header.
Por exemplo, conceitualmente:
hdrlen → descreve um número limitado de endereços
segments_left → declara mais endereços do que os disponíveis
Essa inconsistência deve ser rejeitada antes que o kernel realize o reordenamento de endereços.
A correção upstream introduz validação do valor segments_left do Routing
Header antes que o kernel execute a operação vulnerável.
O commit upstream associado é:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
A correção de segurança pode ser resumida como:
Antes:
Confiar em segments_left
↓
Reordenar endereços
↓
Potencial acesso OOB
Depois:
Validar segments_left
↓
Rejeitar cabeçalho malformado
↓
Processamento AH6 seguro
As versões afetadas dependem do histórico de backport upstream e do fornecedor.
Os usuários devem verificar o aviso de segurança da sua distribuição em vez de confiar apenas no número de versão upstream.
Exemplos de versões estáveis upstream corrigidas incluem:
Verifique o kernel em execução:
uname -a
ou:
uname -r
Verifique informações detalhadas do kernel:
cat /proc/version
Para sistemas baseados em Debian/Kali:
apt-cache policy linux-image-amd64
Para sistemas baseados em RPM:
rpm -q kernel
Kernels de distribuições frequentemente fazem backport de correções de segurança sem alterar a versão upstream de forma óbvia. Sempre verifique o aviso/changelog do fornecedor.
A mitigação principal é atualizar para um kernel que contenha a correção de segurança.
Debian/Kali:
sudo apt update
sudo apt full-upgrade
Em seguida, reinicie:
sudo reboot
Verifique:
uname -r
Para sistemas em produção, consulte o aviso de segurança oficial da distribuição Linux antes de aplicar atualizações de kernel.
Ambiente isolado recomendado:
Host
│
├── Kali Linux
│
└── VM Linux Vulnerável
│
├── Kernel de debug
├── IPv6 habilitado
├── Suporte a AH6/XFRM
└── Símbolos do kernel
Ferramentas úteis de depuração:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
Depuração do kernel:
sudo dmesg -w
Inspecionar símbolos do kernel:
cat /proc/kallsyms
CVE-2026-80844-DirtyAH6/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── vulnerability.md
│ ├── root-cause.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable.patch
│ └── fixed.patch
│
├── docs/
│ └── research-notes.md
│
├── screenshots/
│
└── LICENSE
O material de PoC deve ser executado apenas dentro de um ambiente de laboratório isolado.
A implementação de pesquisa concentra-se em demonstrar a condição de IPv6 Routing Header malformado e observar o comportamento resultante do kernel.
Fluxo de pesquisa esperado:
Criar cabeçalho IPv6 malformado
↓
Transmitir dentro do laboratório isolado
↓
Processamento AH6/XFRM
↓
Observar comportamento do kernel
↓
Capturar dmesg / informações de crash
↓
Comparar kernel vulnerável vs corrigido
Exemplo de monitoramento:
sudo dmesg -w
Um kernel corrigido deve rejeitar a entrada malformada sem atingir a operação de memória vulnerável.
Esta vulnerabilidade demonstra por que os parsers de rede do kernel nunca devem confiar em campos de comprimento ou contagem fornecidos por um atacante.
O parsing crítico para a segurança deve seguir:
Entrada
↓
Validação de limites
↓
Validação de relacionamento
↓
Validação de estado
↓
Operação de memória
em vez de:
Entrada
↓
Operação de memória
↓
Validação
Mesmo uma pequena inconsistência entre dois campos de metadados de pacote pode se tornar uma vulnerabilidade de segurança de memória em nível de kernel.
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftPesquisa de Segurança do Kernel Linux
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
Pesquisar • Analisar • Compreender • Fortalecer
| Campo | Detalhes |
|---|
| CVE | CVE-2026-80844 |
| Codename | DirtyAH6 |
| Componente | Linux Kernel |
| Subsistema | IPv6 / XFRM / AH6 |
| Tipo de Vulnerabilidade | Escalação de Privilégios Local |
| Vetor de Ataque | Local |
| Complexidade de Ataque | Baixa |
| Privilégios Necessários | Baixos |
| Interação do Usuário | Nenhuma |
| CVSS v3.1 | 7.8 — Alta |
| Código Afetado | net/ipv6/ah6.c |
| Status | Corrigido |
| Ramo do Kernel | Versão Corrigida |
|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
| Comportamento | Kernel Vulnerável | Kernel Corrigido |
|---|
segments_left malformado | Validação insuficiente | Validado |
| Processamento do routing header | Pode continuar | Rejeitado quando inválido |
| Operação de memória OOB | Potencialmente alcançável | Prevenida |
| Corrupção do kernel | Possível | Mitigada |
| Escalação de privilégios | Potencial | Mitigada |