← Back to Feed CACHED · 2026-07-24 12:29:38 · CACHE_KEY CVE-2025-66376
CVE-2025-66376 · CWE-79 · Disclosed 2026-01-05

Zimbra Collaboration

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A booby-trapped email that reads itself and empties your inbox before you finish your coffee

CVE-2025-66376 is a stored XSS in Zimbra Collaboration Suite's Classic Web UI caused by insufficient sanitization of CSS @import directives inside HTML email bodies. Attackers wrap a Base64 payload inside an SVG onload handler and fragment the surrounding markup with fake @import directives, split tags, and HTML comments so Zimbra's sanitizer misses it — but the victim's browser reassembles it into live JavaScript that runs the moment the message renders. Affected builds are ZCS 10.0.x < 10.0.18 and ZCS 10.1.x < 10.1.13; fixes shipped in November 2025.

Zimbra rated this HIGH (7.2) with a Scope:Changed, Confidentiality:Low, Integrity:Low vector — a textbook stored-XSS math result. That math is wrong for this bug. It is *zero-click*, executes in the victim's authenticated webmail origin, and has been used by Russia's Laundry Bear / Void Blizzard / TA488 to exfiltrate 90 days of mail, hijack sessions, and steal 2FA codes from government targets. CISA added it to KEV and issued a joint advisory (AA26-204A). Real-world impact is full mailbox compromise without user interaction — that is CRITICAL, not HIGH.

"Zero-click webmail XSS, actively weaponized by Russian APT against NATO mailboxes, KEV-listed. Vendor's 7.2 undershoots reality."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Craft the poisoned HTML email

Attacker builds an HTML email containing an SVG element with an onload attribute holding a Base64-encoded JavaScript payload. The payload is obscured with split HTML tags, comments, and dummy CSS @import directives so it does not match Zimbra's sanitizer heuristics. Tooling is trivial — a text editor and any SMTP relay.
Conditions required:
  • Any SMTP path to the target's Zimbra MX
  • Knowledge of a valid recipient address
Where this breaks in practice:
  • None material — email is a public-facing service by design
Detection/coverage: Email gateways with strict HTML sanitization (Proofpoint, Mimecast custom rules on SVG+onload) may strip the payload before delivery.
STEP 02

Deliver to Zimbra mailbox

Message lands in the target's inbox. No user click, link visit, or attachment open is required. The attack fires on message *render* in the Classic UI. TA488 has been observed sending from lookalike government domains to blend in.
Conditions required:
  • Recipient uses Zimbra Classic UI (default for most on-prem deployments)
Where this breaks in practice:
  • Users on the Modern UI may be less exposed depending on rendering path — but most enterprise ZCS installs default to Classic
Detection/coverage: Mail flow logs show inbound SVG-bearing HTML from untrusted senders; SIEM rules on <svg[^>]*onload in stored .eml are cheap and effective.
STEP 03

Sanitizer bypass on render

When the victim opens or previews the message, Zimbra serves the sanitized HTML to the browser. Because the malicious script is fragmented across fake @import directives and split tags, Zimbra's server-side sanitizer does not flag it. The browser's HTML parser is more permissive and reconstructs the SVG+onload into valid, executing JavaScript.
Conditions required:
  • Vulnerable ZCS build (<10.0.18 / <10.1.13)
Where this breaks in practice:
  • Strict CSP on the Zimbra webmail origin would stop inline script — but stock ZCS does not ship a locked-down CSP
Detection/coverage: No client-side detection; runs in-origin. WAF signatures for @import + SVG combinations in outbound HTML render responses are possible but unusual.
STEP 04

Session hijack and mailbox exfiltration

Payload runs in the authenticated Zimbra webmail origin. It calls the SOAP/REST mail APIs as the victim to enumerate folders, exfiltrate messages, create mail-forwarding filters, and harvest 2FA codes arriving by email. Reported dwell has been ~90 days of mail exported per victim. Persistence is achieved by silently adding a server-side forward rule.
Conditions required:
  • Victim has an active webmail session or logs in later while the message is rendered
Where this breaks in practice:
  • Egress DLP monitoring Zimbra API traffic can catch bulk exports — rarely deployed
Detection/coverage: Zimbra audit logs record CreateFilterRule and SearchRequest/GetMsgRequest bursts; hunt for anomalous forwarding rules and API-driven bulk reads from user sessions.
STEP 05

Pivot to further identity compromise

Stolen 2FA codes and password reset emails harvested from the mailbox let the attacker pivot into SSO, VPN, and third-party SaaS accounts tied to the compromised address. TA488 has chained this against MFA-backed government tenants in Ukraine and NATO countries.
Conditions required:
  • Victim uses email-based recovery or OTP delivery for other services
Where this breaks in practice:
  • Phishing-resistant MFA (FIDO2 / hardware keys) breaks this pivot
Detection/coverage: Impossible-travel / novel-ASN sign-in alerts on downstream SSO.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusActive exploitation by Russian APT Laundry Bear / Void Blizzard / TA488 against NATO, Ukraine, and US government mail servers. Exploited as a zero-day before the November 2025 patch.
KEV statusListed on CISA KEV. Joint CSA AA26-204A issued 2026-07-22 with FVEY partners. Federal patch deadline enforced.
EPSS0.12009 (~top 3–5% percentile). Understated given confirmed KEV + APT use — EPSS lags behind operator intel.
CVSS vector interpretationAV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N — network, no privileges, no user interaction (zero-click), scope-changed. C/I:Low is the vendor being generous; real impact is full mailbox read + persistence.
Affected versionsZCS 10.0.0 – 10.0.17 and 10.1.0 – 10.1.12. ZCS 9.x and 8.x lines are separately EoL — check independently.
Fixed versionsZCS 10.0.18 and ZCS 10.1.13, released November 2025.
Proof of conceptPayload details (SVG onload + fragmented @import bypass, Base64 JS) are documented in the CISA advisory and eSecurityPlanet writeup — reproduction is trivial from public IOCs.
Exposure dataShodan/Censys typically show 30,000–50,000 internet-facing Zimbra webmail hosts. Zimbra is disproportionately deployed by government, education, and telecoms outside the US — exactly TA488's target profile.
Disclosed / patchedPatched November 2025; CVE published 2026-01-05; KEV addition and joint advisory July 2026 after espionage campaign disclosed.
ReportingAttribution and IOCs published jointly by CISA, NSA, FBI, NCSC-UK, NCSC-NL, ACSC, CCCS, and French ANSSI.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to CRITICAL (9.3/10)

Verdict is CRITICAL because the single most decisive factor is active KEV-listed exploitation by a nation-state APT against the exact deployment role — internet-facing enterprise webmail — with zero user interaction. The vendor's HIGH/7.2 is a mechanical CVSS output for stored XSS; it does not model zero-click execution in an identity-adjacent mailbox that already holds 2FA codes and password resets for the rest of the estate.

HIGH Active exploitation and KEV status
HIGH Zero-click execution and affected version accuracy
MEDIUM Total internet-exposed population (varies by scanner snapshot)

Why this verdict

  • Zero-click, no privileges: the CVSS vector itself reports PR:N/UI:N — the attacker only needs an SMTP path to the recipient. No friction filter removes anyone from the reachable population.
  • Active nation-state exploitation: Laundry Bear / TA488 is currently burning this against NATO and Ukrainian government mail. KEV + FVEY joint advisory removes any 'theoretical' discount.
  • Role multiplier — enterprise webmail is an identity-adjacent, high-value role: the compromised origin can read all mail including MFA OTPs, password-reset links, and executive correspondence, and can set persistent forwarding filters. Chain outcome per victim = full mailbox takeover; per organization = SSO / SaaS pivot via harvested resets. Zimbra installs are canonically in this role → floor is CRITICAL.
  • Vendor C:L / I:L is misleading: stored XSS scoring conventions underweight the fact that the vulnerable origin *is* the crown-jewel data store. There is no scope-changed pivot needed to reach the sensitive data — it is already in the same origin.

Why not higher?

No higher bucket exists above CRITICAL in this schema. Reassessed 9.3 rather than 10.0 because impact is scoped to the individual mailbox origin per exploit (attacker must land a message per target account for full effect) and does not directly yield RCE on the Zimbra host itself.

Why not lower?

Downgrading to HIGH would require ignoring the KEV listing, the zero-click vector, and the ongoing FVEY-attributed campaign. The bug requires no authentication, no interaction, and hits a component whose whole purpose is to hold the organization's most sensitive written communication — every friction argument for a downgrade fails.

05 · Compensating Control

What to do — in priority order.

  1. Patch to ZCS 10.0.18 or 10.1.13 now — This is the only durable fix. Given CRITICAL + active exploitation, the KEV-override applies: mitigate/patch within hours, not the standard 3-day noisgate mitigation SLA. Schedule the maintenance window today.
  2. Switch users off Classic UI to Modern UI as an interim — The reported exploitation path targets Classic UI rendering. Setting zimbraPrefClientType=advanced (Modern) organization-wide reduces exposure while patching rolls out. Not a substitute for the patch.
  3. Strip SVG and CSS @import at the mail gateway — Add Proofpoint/Mimecast/Rspamd rules to drop or neutralize inbound HTML containing <svg with event handlers and @import in style blocks from external senders. Deploy within 24 hours as belt-and-braces.
  4. Hunt for TA488 IOCs and unauthorized mail filters — Pull the CISA AA26-204A IOC list. Run zmprov gaf across all accounts to enumerate mail filters and forwarding rules; alert on any external-forward or silent-copy rule created since November 2025. Complete within 72 hours.
  5. Force session invalidation and password rotation post-patch — If any host ran a vulnerable build after November 2025, assume mailbox compromise. Rotate credentials, revoke OAuth tokens, invalidate active sessions (zmprov -l flushCache), and rotate any secrets/2FA seeds that transited email.
What doesn't work
  • Web Application Firewall in front of Zimbra — the payload arrives via SMTP, not HTTP, so the WAF never sees it until the browser fetches the rendered message, which is same-origin.
  • MFA on Zimbra logins — the exploit runs *inside* an already-authenticated session; MFA is bypassed by design.
  • Endpoint EDR on user workstations — the malicious JS runs in the browser origin and calls Zimbra APIs; there is no binary drop and no anomalous process to hook.
  • Blocking the CSS @import keyword alone at the gateway — TA488 uses *fake* @import as a sanitizer confusion primitive; the real payload is in SVG onload. Filtering only @import misses the actual execution vector.
06 · Verification

Crowdsourced verification payload.

Run this on each Zimbra mailbox server as the zimbra user (e.g. sudo -u zimbra bash check-cve-2025-66376.sh). It reads zmcontrol -v to get the installed ZCS version and compares against the fixed builds. No network calls; no elevated privileges beyond the zimbra service account.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate verification for CVE-2025-66376 (Zimbra Collaboration XSS)
# Run as the 'zimbra' service account on each ZCS mailbox host.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -u

ZMCONTROL="$(command -v zmcontrol || echo /opt/zimbra/bin/zmcontrol)"
if [ ! -x "$ZMCONTROL" ]; then
  echo "UNKNOWN: zmcontrol not found — is this a Zimbra host?"
  exit 2
fi

RAW="$($ZMCONTROL -v 2>/dev/null)"
# Example: 'Release 10.1.9_GA_4870.RHEL9_64_20250715120000 RHEL9_64 FOSS edition, Patch 10.1.9_P1.'
VER="$(echo "$RAW" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)"

if [ -z "$VER" ]; then
  echo "UNKNOWN: could not parse ZCS version from: $RAW"
  exit 2
fi

IFS='.' read -r MAJ MIN PAT <<< "$VER"

echo "Detected ZCS version: $VER"

# Fixed: 10.0.18 (10.0.x branch) and 10.1.13 (10.1.x branch)
if [ "$MAJ" -eq 10 ] && [ "$MIN" -eq 0 ]; then
  if [ "$PAT" -ge 18 ]; then
    echo "PATCHED: 10.0.$PAT >= 10.0.18"; exit 0
  else
    echo "VULNERABLE: 10.0.$PAT < 10.0.18 (CVE-2025-66376)"; exit 1
  fi
elif [ "$MAJ" -eq 10 ] && [ "$MIN" -eq 1 ]; then
  if [ "$PAT" -ge 13 ]; then
    echo "PATCHED: 10.1.$PAT >= 10.1.13"; exit 0
  else
    echo "VULNERABLE: 10.1.$PAT < 10.1.13 (CVE-2025-66376)"; exit 1
  fi
elif [ "$MAJ" -lt 10 ]; then
  echo "VULNERABLE: ZCS $VER is EoL and does not receive this fix — treat as vulnerable and plan upgrade"; exit 1
else
  echo "UNKNOWN: unrecognized branch $MAJ.$MIN — verify against Zimbra Security Center"; exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is one of the rare cases where the vendor score is genuinely wrong: HIGH/7.2 does not describe a zero-click, KEV-listed, actively-exploited mailbox takeover being used by Russian intelligence against NATO governments. Treat as CRITICAL. Under the noisgate mitigation SLA a CRITICAL is normally ≤3 days, but KEV + active exploitation triggers the override — patch or take Zimbra webmail offline within hours, today. In parallel, switch users to Modern UI, block inbound SVG+onload at the mail gateway by end of day, and hunt every mailbox for unauthorized forwarding filters created since November 2025 (assume compromise if any vulnerable build was internet-reachable). The noisgate remediation SLA floor is ≤90 days for CRITICAL, but do not use it — every hour a vulnerable Zimbra host remains reachable is measurable in exfiltrated mail. If you cannot patch today, firewall the Zimbra web port off the internet until you can.

Sources

  1. CISA Joint Advisory AA26-204A
  2. US DoD Cybersecurity Advisory PDF
  3. BleepingComputer — CISA orders feds to patch Zimbra XSS
  4. BleepingComputer — Russian hackers exploit Zimbra zero-click flaw
  5. The Hacker News — Laundry Bear Zimbra 0-day
  6. eSecurityPlanet — TA488 technical writeup
  7. Zimbra Security Center
  8. SecurityAffairs — Laundry Bear campaign
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.