
Material de investigación y exploit de prueba de concepto para CVE-2026-31635, una escalada de privilegios local del kernel de Linux en la ruta de descifrado RxRPC/GSSAPI. Incluye análisis de vulnerabilidad, análisis de parches y código fuente del exploit.
Escalada de privilegios local en Linux en la ruta de descifrado RxRPC/GSSAPI. Una comprobación faltante de
skb_cow_data()enrxgk_decrypt_skb()permite que un atacante local sin privilegios corrompa páginas de la caché de páginas y sobrescriba el contenido en memoria de archivos de solo lectura.
Este repositorio contiene los materiales de investigación y la prueba de concepto para CVE-2026-31635, una escalada de privilegios local en el kernel Linux net/rxrpc/rxgk.c.
La vulnerabilidad ocurre cuando RxRPC descifra paquetes en el lugar utilizando AES-CBC sin asegurar primero que los datos del paquete sean privados. Si el paquete está construido a partir de páginas de la caché de páginas, el kernel puede descifrar directamente en memoria compartida respaldada por archivos.
Elija la ruta que coincida con su objetivo:
CONFIG_RXGK./dirtydecrypt --checkcd exploitmakedocs/vulnerability-analysis.mddocs/patch-analysis.md y docs/exploit-development.md⚠️ Este repositorio es solo para investigación y pruebas autorizadas. No lo use contra sistemas sin permiso explícito.
Ejecute las siguientes comprobaciones para determinar si su entorno está dentro del alcance:
uname -r
zgrep CONFIG_RXGK /proc/config.gz 2>/dev/null || grep CONFIG_RXGK /boot/config-$(uname -r)
Si el kernel está en el rango 6.10–6.13 y CONFIG_RXGK está habilitado, el sistema puede ser vulnerable.
Luego use el modo de verificación del PoC del exploit:
cd exploit
./dirtydecrypt --check
Si la comprobación tiene éxito, el sistema es vulnerable. Si falla limpiamente o informa que no hay soporte RxRPC, entonces el kernel no es explotable.
El exploit utiliza un paquete RxRPC malformado para forzar al kernel a descifrar en una página de caché de páginas compartida.
Pasos:
rxgk_decrypt_skb() en el kernel.El exploit se demuestra en exploit/dirtydecrypt.c.
6.10 hasta 6.13CONFIG_RXGK=m o CONFIG_RXGK=yrxgkCONFIG_RXGK deshabilitado por defectogit clone https://github.com/0xFuffM3/CVE-2026-31635-DirtyDecrypt.git
cd exploit
make
Para un binario completamente estático:
make static
./dirtydecrypt --check
Ejemplo 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.mdDeshabilite RxRPC si no es necesario:
sudo rmmod rxrpc
sudo modprobe -r rxgk
echo "blacklist rxrpc" | sudo tee /etc/modprobe.d/blacklist-rxrpc.conf
Actualice a una versión de kernel parcheada:
6.13.26.12.106.6.75Audite las operaciones relevantes de socket y clave:
sudo auditctl -a always,exit -F arch=b64 -S socket -F a0=28 -k rxrpc_sock
P: ¿Puede este exploit modificar archivos en disco?
R: No. La vulnerabilidad solo corrompe el contenido de la caché de páginas; el archivo subyacente en disco permanece sin cambios a menos que la página se vacíe más tarde.
P: ¿Está presente esta vulnerabilidad en kernels posteriores a 6.13?
R: No, el parche fue retroportado y la ruta de código vulnerable está corregida en kernels posteriores a 6.13.2.
P: ¿Cuál es la forma más segura de probar esto?
R: Use una máquina virtual aislada con un kernel vulnerable estándar y una cuenta de usuario desechable.
P: ¿Dónde puedo encontrar el código fuente del exploit?
R: Consulte exploit/dirtydecrypt.c y 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 — consulte LICENSE.
Este repositorio está destinado únicamente para fines educativos y de investigación de seguridad autorizada.
| Propiedad | Detalle |
|---|
| CVE | CVE-2026-31635 |
| Componente | net/rxrpc/rxgk.c — rxgk_decrypt_skb() |
| Causa raíz | Falta comprobación de skb_cow_data() antes del descifrado |
| Impacto | Escalada de privilegios local a root |
| Kernels afectados | 6.10 – 6.13 |
| Corregido en | 6.13.2 · 6.12.10 · 6.6.75 |