
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 em corrupção de memória do kernel.
Este repositório destina-se exclusivamente a pesquisa de segurança autorizada, análise de vulnerabilidades, CTFs e testes defensivos.
Não utilize esta pesquisa contra sistemas que não lhe pertencem ou para os quais não possui permissão explícita de teste.
| Campo | Detalhes |
|---|---|
| CVE | CVE-2026-80844 |
| Codename | DirtyAH6 |
| Componente | Linux Kernel |
| Subsistema | IPv6 / XFRM / AH6 |
| Tipo de Vulnerabilidade | Escalonamento de Privilégios Local |
| Vetor de Ataque | Local |
| Complexidade do 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 |
A vulnerabilidade existe no caminho de processamento do IPv6 AH6.
O código afetado realiza manipulação do routing header por meio de:
net/ipv6/ah6.c
Especificamente, a lógica vulnerável envolve:
ipv6_rearrange_rthdr()
A função não conseguiu validar 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 cabeçalho de roteamento.
Isso pode levar a:
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
O problema fundamental é a validação insuficiente do valor segments_left do Cabeçalho de Roteamento IPv6.
Conceitualmente, a condição vulnerável pode ser representada como:
segments_left > available routing-header addresses
O kernel deve garantir que o número de segmentos solicitado pelo cabeçalho de roteamento 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/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/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 de cabeçalho de roteamento inconsistentes.
Por exemplo, conceitualmente:
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
Essa incompatibilidade deve ser rejeitada antes que o kernel realize o reordenamento de endereços.
A correção upstream introduz validação para o 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:
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
As versões afetadas dependem do histórico de backport do 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 da versão upstream.
Exemplos de versões estáveis upstream corrigidas incluem:
| 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 |
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
Os kernels de distribuição frequentemente fazem backport de correções de segurança sem alterar a versão upstream de forma óbvia. Verifique sempre 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
Verificar:
uname -r
Para sistemas em produção, consulte o aviso de segurança oficial da distribuição Linux antes de aplicar atualizações do kernel.
Ambiente isolado recomendado:
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
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