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
Dead.Letter-CVE-2026-45185 — Dead.Letter CVE-2026-45185 Script di rilevamento delle vulnerabilità EXIM | Kitploit
Strumenti/GitHubGitHub/liamromanis101/dead.letter-cve-2026-45185
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitScripting e AutomazioneAudit di ConfigurazioneSicurezza di ReteDevSecOpsSicurezza Email

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
GitHub
liamromanis101/dead.letter-cve-2026-45185

Dead.Letter-CVE-2026-45185

Dead.Letter CVE-2026-45185 Script di rilevamento delle vulnerabilità EXIM

Vedi Repository
223 mesi faNon ancora revisionato

CVE-2026-45185 — Scanner di vulnerabilità Exim "Dead.Letter"

Uno script shell per rilevare se un sistema Linux è vulnerabile a CVE-2026-45185, un use-after-free nell'Exim mail transfer agent che può portare all'esecuzione di codice remota.

Progettato per l'uso in pipeline CI/CD, strumenti di gestione della configurazione e audit di sistema ad hoc. Produce output sia leggibile dall'uomo sia leggibile dalla macchina (JSON).


La Vulnerabilità

CVE-2026-45185 (alias: Dead.Letter) è un bug use-after-free nel parsing del corpo dei messaggi BDAT (binary data) di Exim, attivato quando TLS è gestito da GnuTLS.

Durante lo shutdown TLS, Exim libera il proprio buffer di trasferimento TLS — ma un wrapper di ricezione BDAT annidato può ancora elaborare byte in arrivo e chiamare ungetc(), scrivendo un singolo byte \n nella regione liberata. Quella scrittura di un byte corrompe i metadati dell'heap allocator, da cui un attaccante può ottenere primitive di memoria aggiuntive e raggiungere l'esecuzione di codice remoto.

ProprietàDettaglio
CVECVE-2026-45185
AliasDead.Letter
TipoUse-After-Free (CWE-416)
ComponenteGestore BDAT/CHUNKING di Exim (solo build GnuTLS)
Vettore di attaccoRete — non autenticato, richiede solo una connessione TLS e l'estensione CHUNKING
Versioni vulnerabiliExim 4.97 – 4.99.2, solo build GnuTLS
Corretta inExim 4.99.3
Scoperta daFederico Kirschbaum, XBOW Security Lab (segnalata il 1 maggio 2026)

Le build OpenSSL non sono vulnerabili. La vulnerabilità è specifica di Exim compilato con USE_GNUTLS=yes. Se il tuo Exim usa OpenSSL, non sei vulnerabile indipendentemente dalla versione.


Cosa Controlla lo Script

Lo script procede attraverso un albero decisionale, fermandosi e marcando il sistema come non vulnerabile non appena viene confermata una condizione sicura definitiva:

Controllo 1 — Presenza di Exim Cerca in $PATH e nelle posizioni di installazione comuni (/usr/sbin/exim, /usr/sbin/exim4, /usr/local/sbin/exim). Se Exim non viene trovato, il sistema non è vulnerabile e lo script termina immediatamente.

Controllo 2 — Versione di Exim Analizza l'output di exim -bV e lo confronta con l'intervallo vulnerabile (4.97 – 4.99.2). Le versioni ≥ 4.99.3 sono considerate corrette. Le versioni al di fuori dell'intervallo noto sono marcate come non vulnerabili (con una nota se non sono riconosciute).

Controllo 3 — Libreria TLS (il passaggio critico) Usa tre metodi di rilevamento in sequenza:

  1. Informazioni di build di exim -bV (il più affidabile — Exim riporta le proprie funzionalità di compilazione, es. Support for: GnuTLS)
  2. Collegamento delle librerie condivise con ldd
  3. Scansione binaria con strings (fallback)

Se viene rilevato OpenSSL → il verdetto diventa non vulnerabile indipendentemente dalla versione. Se viene rilevato GnuTLS → la superficie di attacco è confermata come presente. Se non è possibile determinare nessuno dei due → il risultato è inconcludente.

Controllo 4 — Configurazione CHUNKING/BDAT (controllo workaround) Viene eseguito solo se il sistema è ancora marcato come vulnerabile a questo punto. Verifica se chunking_advertise_hosts è stato esplicitamente impostato a un valore vuoto nella configurazione di Exim, il che disabilita l'annuncio di BDAT e blocca il vettore di attacco. Gestisce sia config a file singolo sia la struttura di configurazione suddivisa di Debian (frammenti /etc/exim4/conf.d/).

Nota: se chunking_advertise_hosts è assente dalla configurazione (il default), Exim annuncia CHUNKING a tutti gli host (*). L'opzione deve essere esplicitamente impostata a un valore vuoto per disabilitarlo.

Controllo 5 — Mitigazioni di sistema informative Non modifica il verdetto, ma riporta fattori che influenzano la sfruttabilità:

  • Livello ASLR (/proc/sys/kernel/randomize_va_space) — dovrebbe essere 2
  • Versione glibc — la 2.32+ ha controlli di integrità dei metadati dell'heap più forti
  • Output di checksec per il binario Exim (PIE, RELRO, stack canaries) se checksec è installato
  • Sandboxing dell'unità systemd: MemoryDenyWriteExecute, NoNewPrivileges, SystemCallFilter

Requisiti

  • Bash 4.0 o successivo
  • Linux con filesystem /proc (per il controllo ASLR)
  • Coreutils standard: grep, awk, ldd, head
  • checksec (opzionale — per l'analisi dell'hardening del binario)
  • systemctl (opzionale — per l'ispezione dell'unità systemd)
  • Deve essere eseguito con privilegi sufficienti per leggere il file di configurazione di Exim (tipicamente root, o un utente nel gruppo Debian-exim su Debian/Ubuntu)

Non sono richieste dipendenze esterne per i controlli principali della vulnerabilità.


Utilizzo

root@kitploit:~
chmod +x check_cve_2026_45185.sh
./check_cve_2026_45185.sh

Opzioni

FlagDescrizione

Codici di uscita

CodiceSignificato
0Non vulnerabile (o è stata trovata una condizione sicura definitiva)

Esempio di Output

Leggibile dall'uomo (default)

root@kitploit:~
CVE-2026-45185 (Dead.Letter) — Exim Vulnerability Assessment
============================================================

[CHECK] Checking for Exim installation...
[WARN]  Exim binary found: /usr/sbin/exim4
[CHECK] Checking Exim version...
        Detected version: 4.99.1
[FAIL]  Exim 4.99.1 is in the vulnerable range (4.97 – 4.99.2).
[CHECK] Checking TLS library linkage (GnuTLS vs OpenSSL)...
[FAIL]  Exim is linked against GnuTLS — this build IS affected.
[CHECK] Checking CHUNKING (BDAT) advertisement config...
        Config file: /etc/exim4/exim4.conf
[WARN]  chunking_advertise_hosts is not disabled — BDAT is active (default advertises to all hosts).
        Tip: add 'chunking_advertise_hosts =' (empty value) to your main config to disable BDAT as a workaround.
[CHECK] Checking system-level exploit mitigations (informational)...
[PASS]  ASLR: full randomisation (randomize_va_space=2)
        glibc version: 2.35 (2.32+ has stronger heap metadata checks)
[WARN]  systemd: MemoryDenyWriteExecute not set — recommend adding to unit
[WARN]  systemd: NoNewPrivileges not set

------------------------------------------------------------
VERDICT
------------------------------------------------------------
VULNERABLE — CVE-2026-45185
  Reason: Exim version 4.99.1 is in vulnerable range 4.97–4.99.2

Recommended actions:
  1. Upgrade Exim to 4.99.3 or later (primary fix)
  2. As a workaround, set 'chunking_advertise_hosts =' (empty) in exim config
  3. Add MemoryDenyWriteExecute=yes and NoNewPrivileges=yes to the systemd unit
  4. Ensure ASLR is set to 2: echo 2 > /proc/sys/kernel/randomize_va_space
------------------------------------------------------------

Output JSON (--json)

root@kitploit:~
{
  "cve": "CVE-2026-45185",
  "alias": "Dead.Letter",
  "host": "mailserver-01",
  "timestamp": "2026-05-12T17:00:00Z",
  "verdict": "vulnerable",
  "reason": "Exim version 4.99.1 is in vulnerable range 4.97–4.99.2",
  "exit_code": 1,
  "findings": {
    "exim_binary": "/usr/sbin/exim4",
    "exim_version": "4.99.1",
    "exim_version_vulnerable": "true",
    "tls_library": "gnutls",
    "tls_library_detected": "gnutls",
    "exim_config": "/etc/exim4/exim4.conf",
    "chunking_advertised": "true",
    "aslr_level": "2",
    "glibc_version": "2.35"
  },
  "mitigations": [
    "aslr=full"
  ]
}

Integrazione CI/CD

GitHub Actions

root@kitploit:~
- name: Check for CVE-2026-45185
  run: |
    chmod +x check_cve_2026_45185.sh
    ./check_cve_2026_45185.sh --json | tee vuln-report.json
    exit $(jq '.exit_code' vuln-report.json)

- name: Upload vulnerability report
  if: always()
  uses: actions/upload-artifact@v4
  with:
    name: cve-2026-45185-report
    path: vuln-report.json

GitLab CI

root@kitploit:~
check-exim-vuln:
  stage: security
  script:
    - chmod +x check_cve_2026_45185.sh
    - ./check_cve_2026_45185.sh --json > vuln-report.json
  artifacts:
    when: always
    paths:
      - vuln-report.json
  allow_failure: false

Ansible

root@kitploit:~
- name: Run CVE-2026-45185 check
  script: check_cve_2026_45185.sh --json
  register: vuln_check
  failed_when: vuln_check.rc == 1
  changed_when: false

- name: Show vulnerability report
  debug:
    msg: "{{ vuln_check.stdout | from_json }}"

Analisi dell'output JSON con jq

root@kitploit:~
# Ottieni solo il verdetto
./check_cve_2026_45185.sh --json | jq -r '.verdict'

# Verifica se è stata trovata una mitigazione specifica
./check_cve_2026_45185.sh --json | jq '.mitigations | contains(["aslr=full"])'

# Esegui su più host e raccogli i risultati
for host in mail1 mail2 mail3; do
  ssh "$host" 'bash -s' < check_cve_2026_45185.sh --json
done | jq -s '.'

Rimedio

Fix principale — aggiornare Exim

root@kitploit:~
# Debian / Ubuntu
apt-get update && apt-get install --only-upgrade exim4

# RHEL / CentOS / Fedora
dnf upgrade exim

# Da sorgente
# Scarica 4.99.3 da https://ftp.exim.org/pub/exim/exim4/
# e ricompila con le tue impostazioni Local/Makefile esistenti

Verifica dopo l'aggiornamento:

root@kitploit:~
exim -bV | head -1
# Atteso: Exim version 4.99.3 ...

Workaround temporaneo — disabilitare CHUNKING/BDAT

Se non puoi aggiornare immediatamente, aggiungere la seguente riga alla sezione di configurazione principale del tuo file di configurazione Exim disabilita completamente l'annuncio di BDAT, bloccando il vettore di attacco:

root@kitploit:~
chunking_advertise_hosts =

Il valore vuoto significa "nessun host" — Exim non annuncerà più l'estensione CHUNKING nelle risposte EHLO. Riavvia Exim dopo aver apportato questa modifica:

root@kitploit:~
# Debian / Ubuntu
systemctl restart exim4

# Altri sistemi systemd
systemctl restart exim

Verifica che CHUNKING non sia più annunciato:

root@kitploit:~
# Connettiti e controlla la risposta EHLO — CHUNKING non dovrebbe comparire
echo QUIT | openssl s_client -connect localhost:25 -starttls smtp 2>/dev/null \
  | grep -i chunking
# Nessun output = CHUNKING è disabilitato

Questo è un workaround, non un fix. Alcuni server di posta mittenti usano BDAT per la consegna di messaggi di grandi dimensioni. Disabilitarlo può causare problemi di compatibilità con quei mittenti. Aggiorna a 4.99.3 il prima possibile.

Hardening dell'unità systemd (difesa in profondità)

Anche su un sistema corretto, aggiungere queste direttive all'unità systemd di Exim riduce l'impatto di qualsiasi futura vulnerabilità di corruzione della memoria:

root@kitploit:~
# /etc/systemd/system/exim4.service.d/hardening.conf
[Service]
NoNewPrivileges=yes
MemoryDenyWriteExecute=yes
ProtectSystem=strict
PrivateTmp=yes
RestrictAddressFamilies=AF_INET AF_INET6
SystemCallFilter=@system-service
root@kitploit:~
systemctl daemon-reload && systemctl restart exim4

Limitazioni

  • Lo script esegue solo rilevamento statico. Non tenta di sfruttare la vulnerabilità né di confermarne la sfruttabilità nelle specifiche condizioni di runtime del sistema target.
  • Su sistemi in cui il binario Exim non può essere eseguito (es. vincoli di permesso in un container), il rilevamento della libreria TLS ricade su ldd e strings, che possono essere meno affidabili.
  • Le versioni di Exim inferiori alla 4.97 sono al di fuori dell'intervallo noto per questa specifica CVE, ma non sono mantenute e probabilmente sono vulnerabili ad altri problemi non corretti. L'aggiornamento è consigliato in ogni caso.
  • Lo script richiede accesso in lettura al file di configurazione di Exim per verificare il workaround CHUNKING. Se eseguito senza privilegi sufficienti, il passaggio di controllo della configurazione riporterà un risultato inconcludente piuttosto che un errore.

Riferimenti

  • The Hacker News — New Exim BDAT Vulnerability Exposes GnuTLS Builds to Potential Code Execution
  • Exim project — Security documentation
  • Exim specification — CHUNKING (chunking_advertise_hosts)
  • Exim specification — TLS configuration
  • XBOW Security Lab
Scarica lo strumento
--jsonRestituisce i risultati come oggetto JSON (vedi sotto)
--quietSopprime tutto l'output; viene impostato solo il codice di uscita
--no-colorDisabilita i codici colore ANSI (utile per i file di log)
--help / -hStampa le informazioni sull'utilizzo
1
Vulnerabile
2Inconcludente — non è stato possibile determinare uno o più fatti richiesti; trattare come potenzialmente vulnerabile
3Errore dello script o ambiente non supportato