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 — Detector y prueba de concepto para una vulnerabilidad de escritura en la caché de páginas del kernel de Linux (CVE-2026-31431) en algif_aead, que incluye un escáner no destructivo y un exploit de escalada de privilegios local. | Kitploit
Herramientas/GitHubGitHub/zhanghangorg/cve-2026-31431
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubzhanghangorg/cve-2026-31431

cve-2026-31431

Detector y prueba de concepto para una vulnerabilidad de escritura en la caché de páginas del kernel de Linux (CVE-2026-31431) en algif_aead, que incluye un escáner no destructivo y un exploit de escalada de privilegios local.

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
hace 3 mesesAún no revisado

Kit de herramientas CVE-2026-31431 (Copy Fail)

Este repositorio contiene el detector y el PoC para la vulnerabilidad de scratch-write en la caché de páginas de algif_aead / authencesn de Linux, CVE-2026-31431.

Artículo de divulgación: https://xint.io/blog/copy-fail-linux-distributions

Nota de autorización

Úselo únicamente en máquinas que le pertenezcan o para las que tenga autorización explícita. El detector no es destructivo y solo opera con archivos centinela en directorios temporales; el PoC y el LPE modifican el estado de la caché de páginas en memoria, lo que constituye una técnica real de escalada de privilegios local, y su ejecución sin autorización suele ser ilegal.

Resumen de la vulnerabilidad

algif_aead ejecuta operaciones AEAD in situ, es decir, req->src == req->dst. Cuando los datos de entrada se envían desde un archivo normal mediante splice(), el scatterlist de destino incluye referencias a las páginas de caché de ese archivo, lo que permite que el kernel pueda escribir en la copia de la caché de páginas del archivo.

authencesn(hmac(sha256),cbc(aes)) realiza un scratch-write de 4 bytes en el campo seqno_lo del AAD (bytes 4 a 7 del AAD). Combinado con el AEAD in situ y la ruta de splice() mencionados, un atacante puede hacer que esos 4 bytes caigan en la página de caché de un archivo legible.

Esta modificación no se escribe de vuelta al disco; solo afecta a la caché de páginas actual del kernel. Por lo tanto, el contenido del archivo en disco no cambia, pero los lectores que compartan esa caché de páginas verán el contenido contaminado. Archivos legibles por todos como /etc/passwd y /usr/bin/su pueden ser objetivos.

Descripción de archivos

Compilar la versión de lanzamiento

Se requiere tener instalado el toolchain de Rust y Cargo en la máquina.

Compilar todos los binarios Rust:

root@kitploit:~
cargo build --release --bins

Al finalizar la compilación se generará:

root@kitploit:~
target/release/cve_2026_31431_detector
target/release/cve_2026_31431_poc

Si el repositorio requiere enviar archivos precompilados, colóquelos en:

root@kitploit:~
dist/linux-x86_64/cve_2026_31431_detector
dist/linux-x86_64/cve_2026_31431_poc
dist/linux-x86_64/SHA256SUMS

No envíe todo el directorio target/; contiene artefactos intermedios de Cargo y caché local.

Compilar solo el detector no destructivo:

root@kitploit:~
cargo build --release --bin cve_2026_31431_detector

Compilar solo la versión Rust de poc.py:

root@kitploit:~
cargo build --release --bin cve_2026_31431_poc

Verificar si existe la vulnerabilidad

Se recomienda el detector Rust no destructivo:

root@kitploit:~
./target/release/cve_2026_31431_detector
echo $?

También se puede ejecutar directamente con Cargo:

root@kitploit:~
cargo run --release --bin cve_2026_31431_detector
echo $?

Uso del detector Python:

root@kitploit:~
python3 test_cve_2026_31431.py
echo $?

Significado de los códigos de salida:

Código de salidaSignificado
0No se detectó la vulnerabilidad, o no se cumplen las condiciones previas, por ejemplo, / no está disponible.

Interpretación común de la salida:

Operaciones que realiza el detector:

  1. Comprueba si AF_ALG y authencesn(hmac(sha256),cbc(aes)) están disponibles.
  2. Crea un archivo centinela de 4 KiB en un directorio temporal.
  3. Envía el AAD mediante sendmsg y establece el seqno_lo del AAD al marcador PWND.
  4. Mediante splice(), envía la página de caché del archivo centinela al op socket de AF_ALG.
  5. Llama a recv() para impulsar la ejecución del algoritmo.
  6. Vuelve a leer el archivo centinela y comprueba si el marcador u otras modificaciones aparecen en la caché de páginas.

El detector no modifica /usr/bin/su, /etc/passwd ni otros archivos del sistema. El archivo centinela temporal se elimina al salir.

Ejecutar el PoC

Versión Rust de poc.py:

root@kitploit:~
./target/release/cve_2026_31431_poc

o:

root@kitploit:~
cargo run --release --bin cve_2026_31431_poc

Nota: este PoC abre /usr/bin/su según la lógica de poc.py, contamina su copia en la caché de páginas mediante la primitiva de la vulnerabilidad y luego ejecuta su. No es un flujo de detección no destructivo; solo debe ejecutarse en entornos de prueba autorizados.

Uso del LPE en Python

root@kitploit:~
python3 exploit_cve_2026_31431.py
python3 exploit_cve_2026_31431.py --shell

Este script busca el campo UID del usuario actual en /etc/passwd e intenta cambiar el UID en la caché de páginas a 0000. El /etc/passwd en disco no se modifica, pero los procesos del sistema que lean la caché de páginas pueden ver el contenido contaminado.

Limitaciones:

  • El UID del usuario actual debe ser un número de 4 dígitos, por ejemplo, de 1000 a 9999.
  • Los servicios de caché NSS, como nscd, sssd y systemd-userdbd, pueden enmascarar los cambios en la caché de páginas de /etc/passwd.
  • La caché de páginas de /etc/passwd debe permanecer presente entre el parche y la ejecución de su.

Limpiar la caché de páginas:

root@kitploit:~
python3 -c "import os; fd=os.open('/etc/passwd', os.O_RDONLY); os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)"

Si ya se obtuvo una shell root, también se puede ejecutar:

root@kitploit:~
echo 3 > /proc/sys/vm/drop_caches

Reiniciar también elimina el estado de la caché de páginas.

Mitigación

Hasta que el kernel de la distribución sea corregido, se puede deshabilitar algif_aead:

root@kitploit:~
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null

Tras aplicar la mitigación, el detector normalmente debería mostrar 检测结论:未发现漏洞 e indicar que no se cumplen las condiciones previas de activación, con código de salida 0.

La idea de la corrección upstream es restaurar la operación AEAD de no in situ a in situ, evitando que las páginas de caché entren en un scatterlist de destino escribible.

Referencias

  • Artículo de divulgación de Xint: https://xint.io/blog/copy-fail-linux-distributions
  • CVE-2026-31431
Descargar herramienta
ArchivoDescripción
test_cve_2026_31431.pyDetector Python no destructivo. Solo opera con archivos centinela temporales y no toca archivos del sistema.
src/main.rsDetector Rust no destructivo. La lógica de detección y los códigos de salida coinciden con el detector Python.
src/bin/poc.rsVersión Rust de poc.py. Contamina la caché de páginas de /usr/bin/su y ejecuta su.
poc.pyPoC en Python.
exploit_cve_2026_31431.pyLPE en Python. Intenta obtener una shell root contaminando la caché de páginas de /etc/passwd.
AF_ALG
authencesn
2Se detectó que es vulnerable a CVE-2026-31431.
1Error durante el proceso de prueba; el resultado no puede usarse como criterio de vulnerabilidad.
SalidaConclusión
检测结论:未发现漏洞No se detectó la vulnerabilidad, o no se cumplen las condiciones previas de activación.
检测结论:存在 CVE-2026-31431 漏洞El marcador PWND cayó correctamente en la página de caché spliced; existe la vulnerabilidad.
检测结论:存在疑似 CVE-2026-31431 漏洞La caché de páginas fue modificada; incluso si el marcador no cayó en la posición esperada, debe considerarse afectado.
测试过程出错,无法判断是否存在漏洞Fallo en la detección, código de salida 1; se debe investigar según el mensaje de error y volver a ejecutar.