
Exploit de escalada de privilégios local no kernel Linux para CVE-2026-31635 que corrompe o cache de páginas via descriptografia in-place do RxRPC, sobrescreve arquivos somente leitura e executa shellcode, com um modo de verificação.
Escalada de privilégio local no Linux através do caminho de descriptografia RxRPC/GSSAPI. A falta de uma verificação
skb_cow_data()emrxgk_decrypt_skb()permite que um atacante local não privilegiado corrompa páginas do cache de páginas e sobrescreva o conteúdo em memória de arquivos somente leitura.
Este repositório contém os materiais de pesquisa e a prova de conceito para CVE-2026-31635, uma escalada de privilégio local no kernel Linux em net/rxrpc/rxgk.c.
A vulnerabilidade ocorre quando o RxRPC descriptografa pacotes in-place usando AES-CBC sem primeiro garantir que os dados do pacote sejam privados. Se o pacote for construído a partir de páginas do cache de páginas, o kernel pode descriptografar diretamente em memória compartilhada com arquivo.
Escolha o caminho que corresponde ao seu objetivo:
CONFIG_RXGK./dirtydecrypt --checkcd exploitmakedocs/vulnerability-analysis.mddocs/patch-analysis.md e docs/exploit-development.md⚠️ Este repositório é apenas para pesquisa autorizada e testes. Não utilize contra sistemas sem permissão explícita.
Execute as seguintes verificações para determinar se seu ambiente está no escopo:
uname -r
zgrep CONFIG_RXGK /proc/config.gz 2>/dev/null || grep CONFIG_RXGK /boot/config-$(uname -r)
Se o kernel estiver na faixa 6.10–6.13 e CONFIG_RXGK estiver habilitado, o sistema pode estar vulnerável.
Em seguida, use o modo de verificação do PoC do exploit:
cd exploit
./dirtydecrypt --check
Se a verificação for bem-sucedida, o sistema está vulnerável. Se falhar de forma limpa ou relatar falta de suporte RxRPC, então o kernel não é explorável.
O exploit usa um pacote RxRPC malformado para forçar o kernel a descriptografar dentro de uma página compartilhada do cache de páginas.
Etapas:
rxgk_decrypt_skb() no kernel.O exploit é demonstrado em exploit/dirtydecrypt.c.
6.10 a 6.13CONFIG_RXGK=m ou CONFIG_RXGK=yrxgkCONFIG_RXGK desabilitado por padrãogit clone https://github.com/0xFuffM3/CVE-2026-31635-DirtyDecrypt.git
cd exploit
make
Para um binário totalmente estático:
make static
./dirtydecrypt --check
Exemplo de uso:
./dirtydecrypt -f /usr/bin/sudo -o /tmp/sudo_patched
./dirtydecrypt -p shellcode/payload.bin
docs/vulnerability-analysis.mddocs/exploit-development.mddocs/patch-analysis.mddocs/affected-kernels.mdDesabilite o RxRPC se não for necessário:
sudo rmmod rxrpc
sudo modprobe -r rxgk
echo "blacklist rxrpc" | sudo tee /etc/modprobe.d/blacklist-rxrpc.conf
Atualize para um kernel corrigido:
6.13.26.12.106.6.75Audite operações de socket e chave relevantes:
sudo auditctl -a always,exit -F arch=b64 -S socket -F a0=28 -k rxrpc_sock
P: Este exploit pode modificar arquivos no disco?
R: Não. A vulnerabilidade corrompe apenas o conteúdo do cache de páginas; o arquivo subjacente no disco permanece inalterado, a menos que a página seja posteriormente sincronizada.
P: Esta vulnerabilidade está presente em kernels mais recentes que 6.13?
R: Não. O patch foi backportado e o caminho de código vulnerável está corrigido em kernels após 6.13.2.
P: Qual a maneira mais segura de testar isto?
R: Use uma VM isolada com um kernel vulnerável padrão e uma conta de usuário descartável.
P: Onde posso encontrar o código-fonte do exploit?
R: Veja exploit/dirtydecrypt.c e exploit/README.md.
CVE-2026-31635-DirtyDecrypt/
├── README.md
├── LICENSE
├── DISCLAIMER.md
├── CHANGELOG.md
├── exploit/
│ ├── README.md
│ ├── dirtydecrypt.c
│ ├── Makefile
│ └── shellcode/
│ └── payload.asm
└── docs/
├── vulnerability-analysis.md
├── exploit-development.md
├── affected-kernels.md
├── patch-analysis.md
└── references.md
MIT — veja LICENSE.
Este repositório destina-se apenas a uso educacional e pesquisa de segurança autorizada.
| Property | Detail |
|---|
| CVE | CVE-2026-31635 |
| Component | net/rxrpc/rxgk.c — rxgk_decrypt_skb() |
| Root cause | Falta de verificação skb_cow_data() antes da descriptografia |
| Impact | Escalada de privilégio local para root |
| Kernels afetados | 6.10 – 6.13 |
| Corrigido em | 6.13.2 · 6.12.10 · 6.6.75 |