
Uma implementação em Go do fragnesia (CVE-2026-46300)
Uma SA. Um byte de cada vez. Sem corrida.
Port em Go do fragnesia (CVE-2026-46300). Membro da classe de vulnerabilidades Dirty Frag - bug separado, mesma superfície, patch próprio.
O bug está no subsistema XFRM ESP-in-TCP do Linux. Quando TCP_ULP espintcp é instalado em um socket depois que os dados já foram transferidos por splice() de um arquivo para a fila de recebimento do TCP, o kernel trata os dados enfileirados como um registro de texto cifrado ESP e os descriptografa in-place. A origem desses dados é uma página do page cache. A descriptografia aplica XOR do keystream AES-GCM diretamente nela.
O resultado é uma escrita controlada de um único byte no page cache de qualquer arquivo legível.
Tabela do keystream
O bloco de contador AES-GCM (RFC 4106) na posição 2 é [salt(4) || IV(8) || 0x00000002]. Criptografar esse bloco com a chave de sessão gera um bloco de keystream de 16 bytes. O byte 0 desse bloco é o que sofre XOR com o byte de destino. Variando os 32 bits inferiores do nonce do IV, todos os 256 valores possíveis de byte do keystream são alcançáveis dentro dos primeiros 65536 nonces. O exploit constrói essa tabela de consulta uma única vez na inicialização via AF_ALG AES-ECB.
Loop de byte-flip
Para cada byte do payload:
needed_keystream = current XOR desired.TCP_ULP até que os dados sejam enfileirados).current XOR keystream = current XOR (current XOR desired) = desired.Uma SA. No máximo 192 gatilhos. Determinístico.
go build -o fragnesia-go .
./fragnesia-go
Em caso de sucesso, ele entra em um shell root por meio de um novo PTY. O binário em disco não é alterado - apenas o page cache.
echo 1 | tee /proc/sys/vm/drop_caches
esp6 (modo de transporte, loopback IPv6)Todos os kernels anteriores ao patch: https://lists.openwall.net/netdev/2026/05/13/79
Mesma faixa do dirtyfrag.
Igual à do dirtyfrag:
rmmod esp4 esp6
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' \
> /etc/modprobe.d/fragnesia.conf
| dirtyfrag-go | fragnesia-go |
|---|
| CVEs | CVE-2026-43284 / CVE-2026-43500 | CVE-2026-46300 |
| Transporte | ESP-in-UDP + RxRPC | ESP-in-TCP (ULP) |
| Granularidade de escrita | 4 bytes por gatilho | 1 byte por gatilho |
| SAs XFRM | 48 | 1 |
| Criptografia | HMAC-SHA256 + CBC-AES | AES-128-GCM |
| Família IP | IPv4 | IPv6 |