FlawOpen

flawopen.com/Teardowns/cve-2026-73570-zimbra-snmp-command-injection

● CVE-2026-73570 · CVSS 8.9[5], [10] · Hoch
Sicherheitsforschung · FlawOpen

CVE-2026-73570: Wie Zimbras SNMP-Benachrichtigungspfad zu Command Injection führte

CVE-2026-73570 ist eine nicht authentifizierte Command-Injection-Schwachstelle im optionalen SNMP-Benachrichtigungspfad von Zimbra. Eine speziell gestaltete E-Mail konnte einen Statuswert beeinflussen, der später in einen Shell-Befehl interpoliert wurde. Zimbra korrigierte den Aufruf in Version 10.1.20. Microsoft berichtete später von Scan-Tools, die den verwundbaren Pfad vor der öffentlichen Offenlegung sondierten.[1], [2], [5]

CVSS-VektorCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:L[5], [10]
💡 Einfache Erklärung (ELI5)

Ein Mitarbeiter in der Poststelle überträgt das Etikett eines Umschlags in einen Arbeitsauftrag. Früher wurde der gesamte Auftrag einem Befehlsinterpreter übergeben, der Zeichen auf dem Etikett als zusätzliche Anweisungen missverstehen konnte. Die Korrektur übergibt dem Benachrichtigungsprogramm eine Liste getrennter Argumente, sodass das Etikett Daten bleibt.[8], [9], [3]

Kernkonzepte & Begriffe

swatchdog
Ein Log-Überwachungsprozess, der in diesem Zimbra-Pfad Statusmeldungen erkennt und Benachrichtigungen auslöst.[1]
SNMP-Trap
Eine Meldung, die ein verwaltetes System bei einem Ereignis an einen SNMP-Überwachungsempfänger sendet.[1]
Shell-Interpolation
Ein textueller Befehl wird von einer Shell ausgewertet. Zeichen in nicht vertrauenswürdigen Werten können dadurch die Befehlsinterpretation verändern.[8], [7]
system in Listenform
Perls Mehrargumentform von system startet das Programm direkt und übergibt jedes Argument einzeln, statt eine Shell eine Befehlszeichenfolge auswerten zu lassen.[9], [3]

Framework-Zuordnungen

Ursachenanalyse

Der betroffene Code liegt in rpmconf/Conf/swatchrc, Funktion dosnmp. Eine swatch-Regel erfasst einen Dienstnamen aus einer Statuszeile und reicht ihn über donotify als SERVICE weiter; dosnmp setzte diesen Wert in einen Backtick-Befehl mit $snmptrap ein. Da Backticks eine Shell aufrufen, konnte der aus dem Log stammende Wert als Befehlssyntax interpretiert werden. Die dokumentierten Voraussetzungen müssen gemeinsam erfüllt sein: Zimbra Collaboration Suite vor 10.1.20, installiertes optionales Paket zimbra-snmp und aktivierte SNMP-Benachrichtigungen. Microsoft berichtet, dass speziell gestaltete SMTP-Eingaben diesen Pfad erreichen konnten. Das Unternehmen beobachtete vom 28. Juli bis zum 7. August 2026 Scan-Tools, die den verwundbaren Injektionspunkt sondierten – nach dem Patch vom 20. Juli und vor der öffentlichen Offenlegung am 13. August. Zimbras Korrektur ersetzt die Shell-Zeichenfolge durch system(...) in Listenform und übergibt Programm und Argumente getrennt; die Shell ist nicht mehr Teil der Ausführung. Diese Analyse betrifft nur den SNMP-Benachrichtigungscode und bedeutet nicht, dass jede Zimbra-Installation oder SMTP-Nachricht verwundbar ist.[1], [2], [3], [5], [7]

CVE-2026-73570: Erreichbarkeits- und Behebungsmatrix

BereitstellungsbedingungenTrifft der dokumentierte Pfad zu?Schutzmaßnahme
Zimbra Collaboration Suite vor 10.1.20; optionales Paket zimbra-snmp installiert; SNMP-Benachrichtigungen aktiviert.Alle drei Bedingungen sind für den dokumentierten Benachrichtigungspfad erforderlich. Microsoft berichtet, dass präparierte SMTP-Eingaben den Dienststatus beeinflussen konnten, den dosnmp später verarbeitet.Aktualisieren Sie auf 10.1.20 oder höher. Prüfen Sie relevante Protokolle und Prozesstelemetrie für den Expositionszeitraum; behandeln Sie Hinweise als Ermittlungsansätze, nicht als Kompromittierungsnachweis.
Paket zimbra-snmp fehlt oder SNMP-Benachrichtigungen sind deaktiviert.Der beschriebene dosnmp-Benachrichtigungspfad ist in dieser Konfiguration nicht aktiv. Das belegt nicht, dass der Server frei von anderen Schwachstellen ist.Lassen Sie die Funktion deaktiviert oder das Paket entfernt, bis der Server aktualisiert ist. Inventarisieren Sie alle Mailbox-Knoten und prüfen Sie die Einstellung auf jedem Knoten.
Zimbra Collaboration Suite 10.1.20 oder höher mit installiertem Herstellerfix.Die dokumentierte Shell-Befehlsbildung wurde in 10.1.20 korrigiert. Eine Versionsangabe allein bestätigt weder alle Knoten noch lokale Änderungen.Prüfen Sie installierte Version und Paket auf jedem Knoten. Untersuchen Sie frühere Zeiträume nach dem üblichen Verfahren, falls alle drei Expositionsbedingungen erfüllt waren.

Schritt-für-Schritt Angriffsablauf

Schritt 1

Die Voraussetzungen sind erfüllt

Version vor 10.1.20, installiertes Paket zimbra-snmp und aktivierte SNMP-Benachrichtigungen.[1]

Schritt 2

E-Mail beeinflusst die Dienstüberwachung

Microsoft berichtet, dass SMTP-Eingaben einen protokollierten Statuswert beeinflussen konnten. Exploit-Zeichenfolgen und Netzwerkanweisungen werden ausgelassen.[1]

Schritt 3

swatchdog leitet den Wert weiter

Eine Regel erfasst das Dienstfeld und übergibt es über donotify an dosnmp, wenn SNMP-Benachrichtigungen aktiv sind.[1]

Schritt 4

Die Shell interpretiert Daten als Befehl

Vor dem Fix übergaben Perl-Backticks dem Shell-Prozess eine Zeichenfolge mit dem erfassten Wert, ausgeführt als Zimbra-Dienstkonto.[1]

Schritt 5

10.1.20 entfernt die Shell

Der Fix ruft snmptrap mit getrennten Argumenten auf. Aktualisiere und untersuche exponierte Instanzen; die Korrektur schließt frühere Aktivitäten nicht aus.[1]

Quellcode: Verwundbar vs. Sicher

Die verwundbaren Backticks übergaben eine interpolierte Zeichenfolge an eine Shell. Der Upstream-Fix verwendet system mit mehreren Argumenten und übergibt Programm und Argumente einzeln. Metazeichen in SERVICE werden dadurch nicht zu Shell-Anweisungen. Der Ausschnitt zeigt den geänderten Aufruf, keinen ausführbaren Exploit und keine vollständige Dateikopie.[3], [4], [8], [9]

Quelltextauszug: rpmconf/Conf/swatchrc: dosnmp

VERWUNDBARE IMPLEMENTIERUNG
# Gekürzte Darstellung des betroffenen dosnmp-Codes; keine Exploit-Eingabe.
sub dosnmp {
    my %args = (@_);
    `$snmptrap $snmpsvctrap $snmpsvcname s $args{SERVICE} $snmpsvcstatus i $statuses{$args{STATUS}}`;
}
GEHÄRTETER SICHERHEITS-PATCH
# Zimbra-10.1.20-Fix: Programm direkt mit getrennten Argumenten starten.
sub dosnmp {
    my %args = (@_);
    system(
        "/opt/zimbra/common/bin/snmptrap",
        "-v", "2c", "-c", "zimbra", $traphost, "",
        $snmpsvctrap, $snmpsvcname, "s", $args{SERVICE},
        $snmpsvcstatus, "i", $statuses{$args{STATUS}}
    );
}

Checkliste für Engineering & Systemsicherheit

Quellen