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-Report-Copy-fail-Vulnerability- — Análisis detallado de la vulnerabilidad Copy Fail (CVE-2026-31431) en el kernel de Linux, incluyendo el mecanismo de corrupción de memoria, el flujo de escalada de privilegios y el impacto en la seguridad. | Kitploit
Herramientas/GitHubGitHub/krish-foren6/cve-2026-31431-report-copy-fail-vulnerability-
Escalada de PrivilegiosForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónRespuesta a IncidentesEscape de Contenedores
GitHub

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
krish-foren6/cve-2026-31431-report-copy-fail-vulnerability-

CVE-2026-31431-Report-Copy-fail-Vulnerability-

Análisis detallado de la vulnerabilidad Copy Fail (CVE-2026-31431) en el kernel de Linux, incluyendo el mecanismo de corrupción de memoria, el flujo de escalada de privilegios y el impacto en la seguridad.

Ver Repositorio
127hace 5 mesesAún no revisado

CVE-2026-31431 — Copy Fail: Escalada de Privilegios en el Kernel de Linux

CVE CVSS Kernel Type Purpose

Análisis educativo de la vulnerabilidad Copy Fail en el kernel de Linux.
Cubre el mecanismo de corrupción de memoria, el flujo de escalada de privilegios, el escape de contenedores y las contramedidas defensivas.


⚠️ Aviso Legal

Este repositorio es solo para fines educativos y de investigación.
No utilice esta información en sistemas que no le pertenezcan o para los que no tenga permiso explícito por escrito para realizar pruebas.
Todos los fragmentos de código y comandos se proporcionan estrictamente para ayudar a comprender los internals del kernel de Linux.


Tabla de Contenidos

  • Resumen
  • Tarjeta de Identidad de la Vulnerabilidad
  • Conceptos Previos
  • Cómo Funciona el Fallo
  • Flujo de Ataque Completo
  • Por Qué Es Tan Peligroso
  • Observación Práctica Segura
  • Defensa y Detección
  • Comparación con CVEs Similares
  • Glosario
  • Referencia Rápida

Resumen

CVE-2026-31431, también conocida como Copy Fail, es una vulnerabilidad del kernel de Linux en la que un usuario local sin privilegios puede escalar a root sin necesidad de permisos especiales.

El ataque opera enteramente en RAM. El archivo en disco nunca se toca, lo que significa que los hashes de archivos permanecen limpios, las marcas de tiempo no cambian y los registros de auditoría no registran nada. Cuando el sistema se reinicia, toda la evidencia desaparece.

Usuario normal  →  explota el fallo algif_aead  →  sobrescribe la caché de páginas  →  root

Propiedades clave:

  • ✅ Sin condición de carrera — funciona de forma fiable cada vez
  • ✅ Disco intacto — la forensia no encuentra nada
  • ✅ Solo requiere una cuenta de usuario local estándar
  • ✅ Permite el escape de contenedores mediante la caché de páginas compartida

Tarjeta de Identidad de la Vulnerabilidad

CampoValor
ID CVECVE-2026-31431
Nombre ComúnCopy Fail / Corrupción de Caché de Páginas algif_aead
Puntuación CVSS v3.17.8 — CRÍTICA
Tipo de AtaqueEscalada Local de Privilegios (LPE)
Versiones de Kernel AfectadasLinux 5.10 a 6.8 (aprox.)
Componente Vulnerablecrypto/algif_aead.c — interfaz de socket AF_ALG
Fiabilidad de ExplotaciónALTA — No requiere condición de carrera
Evidencia en DiscoNINGUNA — Modificación solo en RAM
Impacto en ContenedoresSÍ — Escape del host mediante caché de páginas compartida
Estado del ParcheDisponible (parche del kernel upstream publicado)

Conceptos Previos

/usr/bin/su — El Binario Objetivo

su (Switch User) permite a un usuario cambiar a otra cuenta, normalmente root. Es un binario SetUID:

ls -l /usr/bin/su
# -rwsr-xr-x 1 root root 68208 Jan 1 2026 /usr/bin/su
#   ^-- 's' = indicador SetUID

El indicador s significa que cuando cualquier usuario ejecuta este binario, se ejecuta con los permisos de root. Esto lo convierte en un objetivo de alto valor.

Su lógica interna (simplificada):

if (password_correct()) {
    give_root_access();
} else {
    deny_access();
}

El objetivo del ataque: omitir por completo la comprobación password_correct().


RAM y Caché de Páginas

Cuando Linux lee un archivo del disco, guarda una copia en RAM llamada caché de páginas.

ComponenteDescripción
DiscoArchivo original en disco (el estante de la biblioteca)
Caché de PáginasCopia del archivo en RAM (la fotocopia en su escritorio)
CPULee y ejecuta desde la caché de páginas — rápido
AtacanteModifica la copia en RAM; el disco permanece intacto
cat /proc/meminfo | grep Cached
# Cached: 1234567 kB  ← esta es la caché de páginas

Buffer y Buffer Seguro

TipoSeguridad
Buffer Seguro — asignado por el kernel, tamaño y límites controlados✅ OK
Caché de Páginas — copia en RAM respaldada por archivo, compartida, ejecutable⚠️ PELIGROSO si se escribe en ella
Puntero Incorrecto — dirección causada por el fallo que apunta a cualquier lugar🔴 CRÍTICO

AF_ALG y algif_aead

AF_ALG (Algorithm Family) es una interfaz de socket de Linux que permite a los programas de espacio de usuario usar funciones criptográficas del kernel (AES, SHA, AEAD).

socket(AF_ALG, SOCK_SEQPACKET, 0);  // abrir un socket criptográfico

algif_aead es el módulo del kernel que maneja el cifrado AEAD (por ejemplo, AES-GCM) a través de AF_ALG. La vulnerabilidad reside en su paso de copia de datos.

AF_ALG  →  algif_aead  →  motor AES-GCM  →  buffer de salida
                                ↑
                           EL FALLO ESTÁ AQUÍ

Cómo Funciona el Fallo

El fallo no está en la lógica de cifrado. Está en el manejo de memoria — se selecciona la región de memoria incorrecta durante una copia de datos.

Flujo normal (sin fallo):

destination = safe_output_buffer;       // ubicación correcta
memcpy(destination, user_data, size);   // datos escritos de forma segura

Flujo vulnerable (con fallo):

destination = buffer + WRONG_OFFSET;    // FALLO: ¡puntero incorrecto!
memcpy(destination, user_data, size);   // los datos caen en la caché de páginas

Se suponía que el kernel escribiría en el buffer de salida seguro. Debido a un offset mal calculado, escribe en la caché de páginas — que contiene la copia en RAM de /usr/bin/su.

Qué cambia el atacante en memoria

El binario contiene código máquina x86-64. El atacante apunta al salto condicional que activa el fallo de autenticación:

Antes del ataque:

cmp  eax, 0     ; comprobar valor de retorno
jne  0x1234     ; si falla → saltar a denegar
call give_root  ; conceder root

Después del ataque (2 bytes cambiados en RAM):

cmp  eax, 0     ; igual
90 90           ; NOP NOP ← salto reemplazado, ¡comprobación omitida!
call give_root  ; la CPU llega aquí directamente

NOP = No Operation. La CPU no hace nada y avanza — omitiendo por completo la comprobación de autenticación.


Flujo de Ataque Completo

Mentalidad Pre-Ataque

"Solo necesito una cuenta de usuario normal. El kernel cometerá el error por sí mismo.
El disco permanece limpio. Sin registros. Funciona siempre."

Paso 0 — Reconocimiento

whoami && id
# uid=1000(user) gid=1000(user) ← usuario normal

uname -r
# 6.1.0-generic ← dentro del rango vulnerable

ls -la /usr/bin/su
# -rwsr-xr-x root root ← SetUID confirmado

python3 -c "import socket; s = socket.socket(socket.AF_ALG); print('AF_ALG disponible')"

Paso 1 — Cargar el Archivo en la Caché de Páginas

cat /usr/bin/su > /dev/null
# /usr/bin/su ahora está cargado en la caché de páginas ✓

Paso 2 — Ingeniería Inversa del Binario

xxd /usr/bin/su | head -50
objdump -d /usr/bin/su | grep -A 20 'check\|auth\|pass'
readelf -h /usr/bin/su

Buscando: la dirección de la función de autenticación, el salto condicional jne/jnz y su offset de bytes exacto.

Paso 3 — Abrir Socket AF_ALG

import socket, struct
Descargar herramienta