Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Dead.Letter-CVE-2026-45185 — Dead.Letter CVE-2026-45185 EXIM Vulnerability Detection Script | Kitploit
Tools/GitHubGitHub/liamromanis101/dead.letter-cve-2026-45185
Vulnerability ScannersVulnerability AnalysisExploitationScripting & AutomationConfiguration AuditingNetwork SecurityDevSecOpsEmail Security

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
liamromanis101/dead.letter-cve-2026-45185

Dead.Letter-CVE-2026-45185

Dead.Letter CVE-2026-45185 EXIM Vulnerability Detection Script

Repository anzeigen
22vor 3 MonatenNoch nicht geprüft

CVE-2026-45185 — „Dead.Letter“ Exim-Schwachstellenscanner

Ein Shell-Skript zur Erkennung, ob ein Linux-System anfällig für CVE-2026-45185 ist, einen Use-After-Free-Fehler im Exim-Mail-Transfer-Agenten, der zu Remote-Codeausführung führen kann.

Konzipiert für den Einsatz in CI/CD-Pipelines, Konfigurationsmanagement-Tools und Ad-hoc-Systemaudits. Erzeugt sowohl menschenlesbare als auch maschinenlesbare (JSON) Ausgabe.


Die Schwachstelle

CVE-2026-45185 (Alias: Dead.Letter) ist ein Use-After-Free-Fehler in Exims BDAT-Parsing (Binary Data) für Nachrichtenkörper, der ausgelöst wird, wenn TLS von GnuTLS verarbeitet wird.

Während des TLS-Shutdowns gibt Exim seinen TLS-Übertragungspuffer frei – aber ein verschachtelter BDAT-Empfangswrapper kann weiterhin eingehende Bytes verarbeiten und ungetc() aufrufen, wodurch ein einzelnes \n-Byte in den freigegebenen Bereich geschrieben wird. Dieses Ein-Byte-Schreiben beschädigt die Heap-Allocator-Metadaten, von denen ein Angreifer weitere Speicher-Primitive ableiten und eine Remote-Codeausführung erreichen kann.

EigenschaftDetail
CVECVE-2026-45185
AliasDead.Letter
TypUse-After-Free (CWE-416)
KomponenteExim BDAT/CHUNKING-Handler (nur GnuTLS-Builds)
AngriffsvektorNetzwerk – nicht authentifiziert, erfordert nur eine TLS-Verbindung und CHUNKING-Erweiterung
Betroffene VersionenExim 4.97 – 4.99.2, nur GnuTLS-Builds
Behoben inExim 4.99.3
Entdeckt vonFederico Kirschbaum, XBOW Security Lab (gemeldet am 1. Mai 2026)

OpenSSL-Builds sind nicht betroffen. Die Schwachstelle betrifft nur Exim, das mit USE_GNUTLS=yes kompiliert wurde. Wenn Ihr Exim gegen OpenSSL gelinkt ist, sind Sie unabhängig von der Version nicht verwundbar.


Was das Skript prüft

Das Skript durchläuft einen Entscheidungsbaum und stoppt und markiert das System als nicht verwundbar, sobald ein definitiv sicherer Zustand bestätigt ist:

Check 1 — Exim-Vorhandensein Durchsucht $PATH und übliche Installationsorte (/usr/sbin/exim, /usr/sbin/exim4, /usr/local/sbin/exim). Wenn Exim nicht gefunden wird, ist das System nicht verwundbar und das Skript beendet sich sofort.

Check 2 — Exim-Version Analysiert die exim -bV Ausgabe und vergleicht sie mit dem betroffenen Bereich (4.97 – 4.99.2). Versionen ≥ 4.99.3 werden als gepatcht behandelt. Versionen außerhalb des bekannten Bereichs werden als nicht verwundbar markiert (mit einem Hinweis, falls sie nicht erkannt werden).

Check 3 — TLS-Bibliothek (die kritische Hürde) Verwendet drei Erkennungsmethoden nacheinander:

  1. exim -bV Build-Informationen (zuverlässigste Methode – Exim meldet seine eigenen Kompilierungsmerkmale, z. B. Support for: GnuTLS)
  2. ldd Shared-Library-Verknüpfung
  3. strings Binärscan (Fallback)

Wenn OpenSSL erkannt wird → Bewertung kippt zu nicht verwundbar unabhängig von der Version. Wenn GnuTLS erkannt wird → die Angriffsfläche wird als vorhanden bestätigt. Wenn keines bestimmt werden kann → Ergebnis ist nicht eindeutig.

Check 4 — CHUNKING/BDAT-Konfiguration (Workaround-Prüfung) Wird nur ausgeführt, wenn das System zu diesem Zeitpunkt noch als verwundbar markiert ist. Prüft, ob chunking_advertise_hosts explizit auf einen leeren Wert in der Exim-Konfiguration gesetzt wurde, was die BDAT-Ankündigung deaktiviert und den Angriffsvektor blockiert. Behandelt sowohl Einzeldatei-Konfigurationen als auch Debian's Split-Konfigurationslayout (/etc/exim4/conf.d/-Fragmente).

Hinweis: Wenn chunking_advertise_hosts in der Konfiguration fehlt (Standard), bewirbt Exim CHUNKING an alle Hosts (*). Die Option muss explizit auf einen leeren Wert gesetzt werden, um sie zu deaktivieren.

Check 5 — Informative System-Mitigations Ändert die Bewertung nicht, meldet aber Faktoren, die die Ausnutzbarkeit beeinflussen:

  • ASLR-Level (/proc/sys/kernel/randomize_va_space) — sollte 2 sein
  • glibc-Version — 2.32+ hat stärkere Heap-Metadaten-Integritätsprüfungen
  • checksec-Ausgabe für das Exim-Binär (PIE, RELRO, Stack Canaries), falls checksec installiert ist
  • systemd-Unit-Sandboxing: MemoryDenyWriteExecute, NoNewPrivileges, SystemCallFilter

Anforderungen

  • Bash 4.0 oder höher
  • Linux mit /proc-Dateisystem (für ASLR-Prüfung)
  • Standard coreutils: grep, awk, ldd, head
  • checksec (optional – für Binär-Härtungsanalyse)
  • systemctl (optional – für systemd-Unit-Inspektion)
  • Muss mit ausreichenden Berechtigungen ausgeführt werden, um die Exim-Konfigurationsdatei lesen zu können (normalerweise root oder ein Benutzer in der Debian-exim-Gruppe auf Debian/Ubuntu)
  • Für die Kern-Schwachstellenprüfungen sind keine externen Abhängigkeiten erforderlich.

Verwendung

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

Optionen

FlagBeschreibung

Exit-Codes

CodeBedeutung
0Nicht verwundbar (oder ein definitiv sicherer Zustand wurde gefunden)

Beispielausgabe

Menschenlesbar (Standard)

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
------------------------------------------------------------

JSON-Ausgabe (--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"
  ]
}

CI/CD-Integration

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 }}"

JSON-Ausgabe mit jq parsen

root@kitploit:~
# Get just the verdict
./check_cve_2026_45185.sh --json | jq -r '.verdict'

# Check if a specific mitigation was found
./check_cve_2026_45185.sh --json | jq '.mitigations | contains(["aslr=full"])'

# Run across multiple hosts and collect results
for host in mail1 mail2 mail3; do
  ssh "$host" 'bash -s' < check_cve_2026_45185.sh --json
done | jq -s '.'

Behebung

Primäre Lösung – Exim aktualisieren

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

# RHEL / CentOS / Fedora
dnf upgrade exim

# From source
# Download 4.99.3 from https://ftp.exim.org/pub/exim/exim4/
# and rebuild with your existing Local/Makefile settings

Überprüfung nach dem Upgrade:

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

Temporärer Workaround – CHUNKING/BDAT deaktivieren

Wenn Sie nicht sofort aktualisieren können, deaktiviert das Hinzufügen der folgenden Zeile im Hauptkonfigurationsabschnitt Ihrer Exim-Konfiguration die BDAT-Ankündigung vollständig und blockiert den Angriffsvektor:

root@kitploit:~
chunking_advertise_hosts =

Der leere Wert bedeutet „keine Hosts“ – Exim wird die CHUNKING-Erweiterung nicht mehr in EHLO-Antworten ankündigen. Starten Sie Exim nach dieser Änderung neu:

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

# Other systemd systems
systemctl restart exim

Überprüfen, ob CHUNKING nicht mehr angekündigt wird:

root@kitploit:~
# Connect and check the EHLO response — CHUNKING should not appear
echo QUIT | openssl s_client -connect localhost:25 -starttls smtp 2>/dev/null \
  | grep -i chunking
# No output = CHUNKING is disabled

Dies ist ein Workaround, keine Lösung. Einige sendende Mailserver verwenden BDAT für die Zustellung großer Nachrichten. Das Deaktivieren kann zu Kompatibilitätsproblemen mit diesen Sendern führen. Aktualisieren Sie so bald wie möglich auf 4.99.3.

Härtung der systemd-Unit (Defense in Depth)

Selbst auf einem gepatchten System reduziert das Hinzufügen dieser Direktiven zur Exim-systemd-Unit die Auswirkungen zukünftiger Speicherkorruptions-Schwachstellen:

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

Einschränkungen

  • Das Skript führt nur eine statische Erkennung durch. Es versucht nicht, die Schwachstelle auszunutzen oder die Ausnutzbarkeit unter den spezifischen Laufzeitbedingungen des Zielsystems zu bestätigen.
  • Auf Systemen, auf denen das Exim-Binär nicht ausgeführt werden kann (z. B. aufgrund von Berechtigungsbeschränkungen in einem Container), fällt die TLS-Bibliothekserkennung auf ldd und strings zurück, die möglicherweise weniger zuverlässig sind.
  • Exim-Versionen unter 4.97 liegen außerhalb des bekannten betroffenen Bereichs für diese spezifische CVE, sind aber nicht gewartet und wahrscheinlich anfällig für andere ungepatchte Probleme. Ein Upgrade wird unabhängig davon empfohlen.
  • Das Skript benötigt Lesezugriff auf die Exim-Konfigurationsdatei, um den CHUNKING-Workaround zu überprüfen. Wenn es ohne ausreichende Berechtigungen ausgeführt wird, meldet der Konfigurationsprüfungsschritt „nicht eindeutig“, anstatt zu fehlschlagen.

Referenzen

  • The Hacker News – Neue Exim-BDAT-Schwachstelle setzt GnuTLS-Builds potenzieller Codeausführung aus
  • Exim-Projekt – Sicherheitsdokumentation
  • Exim-Spezifikation – CHUNKING (chunking_advertise_hosts)
  • Exim-Spezifikation – TLS-Konfiguration
  • XBOW Security Lab
Tool herunterladen
--jsonErgebnisse als JSON-Objekt ausgeben (siehe unten)
--quietAlle Ausgabe unterdrücken; nur der Exit-Code wird gesetzt
--no-colorANSI-Farbcodes deaktivieren (nützlich für Logdateien)
--help / -hNutzungsinformationen anzeigen
1
Verwundbar
2Nicht eindeutig – ein oder mehrere erforderliche Fakten konnten nicht bestimmt werden; als potenziell verwundbar behandeln
3Skriptfehler oder nicht unterstützte Umgebung