TL;DR
- A Russian state-sponsored actor (tracked by Unit 42 as CL-STA-1114, by the Dutch AIVD/MIVD and joint international advisory as "Laundry Bear," and overlapping with Microsoft's Void Blizzard) has been exploiting a Zimbra Collaboration Suite zero-day (CVE-2025-66376) since at least July 2025. The exploit is a "half-click"/zero-click stored XSS: simply opening or previewing a crafted HTML email in a vulnerable Zimbra Classic UI webmail session is enough to trigger silent JavaScript execution and full mailbox compromise: no attachment, no link click, no macro.
- The campaign is far larger than the single incident that first surfaced it. Seqrite Labs publicly documented one narrow slice in March 2026 (a Ukrainian State Hydrology Agency target, which it named "Operation GhostMail" and attributed with medium confidence to APT28/Fancy Bear). A July 2026 joint advisory from CISA and 14 other countries' agencies, corroborated by Unit 42 and Proofpoint, revealed the activity dates back a full year earlier and hit government, defense, transportation, and financial-sector targets across NATO member states, Ukraine, CIS countries, and Africa.
- The payload is a nine-operation browser-resident stealer, not a dropped binary. Once triggered, it inherits the victim's live Zimbra session (cookies, CSRF token, SOAP API rights) and, using
Promise.allto run everything in parallel before the tab closes, steals credentials, session tokens, backup 2FA codes, mints a persistent app-specific password, silently enables IMAP, enumerates OAuth grants and mobile devices, harvests browser-autofilled passwords, and exfiltrates 90 days of mail via dual DNS/HTTPS channels. There is no malware to hash; network and SOAP-API telemetry are the durable detection surface.
Executive Summary
On July 23-24, 2026, the US Cybersecurity and Infrastructure Security Agency (CISA), joined by cybersecurity and intelligence agencies from more than a dozen allied nations, published a joint advisory describing sustained Russian state-sponsored exploitation of Zimbra Collaboration Suite (ZCS) webmail. The advisory attributes the activity to an actor the Dutch General Intelligence and Security Service (AIVD) named "Laundry Bear," a group the agency first identified in May 2025 as adjacent to, but distinct from, other well-known Russian APT clusters. Unit 42 tracks the same activity as CL-STA-1114 and notes it overlaps with Microsoft's "Void Blizzard" designation.
What makes this campaign distinctive is not the target set (Russian intrusion sets have hit Ukrainian and Western government targets via webmail platforms for years) but the exploit mechanics. Prior Zimbra-focused campaigns (APT29's server-side command-injection credential theft, TA473/Winter Vivern's lighter JavaScript stealers) required either a vulnerable server configuration or some form of user interaction with a malicious link or attachment. Laundry Bear's exploit for CVE-2025-66376 requires neither: it is a "half-click," view-based exploit. If a targeted user simply opens or previews the email in a vulnerable Zimbra Classic UI session, the browser silently executes attacker JavaScript with the full privileges of that session.
The vulnerability was quietly patched by Zimbra in ZCS 10.0.18 / 10.1.13 in November 2025, described in release notes only as a "stored XSS vulnerability in the Classic UI where attackers could abuse CSS @import directives in email HTML," with no CVE identifier assigned until early January 2026, and no public advisory alerting Zimbra customers to the severity or exploitation until Seqrite's March 2026 report and CISA's KEV catalog addition the following day. That gap between silent patch and public disclosure appears to have given Laundry Bear months of continued exploitation against unpatched or unaware Zimbra deployments.
Proofpoint (tracking the actor as TA488) assesses the group appears to have wound down this specific exploit chain around February 2026, shortly after Seqrite's public detection, but cautions it continues to observe "other unclustered activity sets" exploiting the same flaw in the wild, and warns the group may be using large language models to develop a patch bypass to resume operations.
Threat Actor Profile
Laundry Bear / Void Blizzard / CL-STA-1114 is assessed as a Russian state-sponsored espionage actor. Key attribution points, per the joint advisory and Unit 42:
- First identified: May 2025, by the Netherlands' AIVD, as a new actor adjacent to (but distinct from) other established Russian APT clusters.
- Tracking names: Laundry Bear (AIVD/MIVD, joint advisory), Void Blizzard (Microsoft), CL-STA-1114 (Unit 42), TA488 (Proofpoint).
- Objective: Assessed "almost certainly" to gather sensitive information for the Russian Federation: classic cyberespionage rather than financially motivated activity.
- Prior tradecraft: Before adopting the Zimbra exploit, the group relied on unsophisticated techniques: password spraying and conventional (click-required) phishing.
- Targeted sectors and regions (per Unit 42/CL-STA-1114): Governments, defense, transportation, and financial organizations across NATO member states, Ukraine, Commonwealth of Independent States (CIS) countries, and Africa.
- Operational span: Active against Zimbra targets since at least July 2025, a full year prior to the joint advisory's publication, and roughly five months before Seqrite's public detection of the narrower "Operation GhostMail" slice of this activity.
- Exploit provenance: Proofpoint assesses the CVE-2025-66376 exploit was likely supplied to the group by Russian intelligence services rather than developed independently; Laundry Bear's historical tradecraft did not show the sophistication this exploit chain requires.
A Note on Attribution Overlap: Operation GhostMail vs. Laundry Bear
Seqrite Labs' March 2026 report on "Operation GhostMail" documented a single, narrowly targeted incident: a phishing email sent January 22, 2026 to Ukraine's State Hydrology Agency (operating under the Ministry of Infrastructure, responsible for navigational/maritime/hydrographic support, critical national infrastructure). Seqrite attributed that specific intrusion to APT28/Fancy Bear with medium confidence, based on payload-structure overlap with ESET's previously documented "Operation RoundPress" SpyPress.ZIMBRA malware family.
The July 2026 joint advisory and Unit 42's CL-STA-1114 research describe a substantially broader campaign using the same CVE and near-identical JavaScript stealer architecture, but track it as a distinct actor (Laundry Bear/Void Blizzard) rather than APT28. Both attributions point to Russian state sponsorship, and it is plausible that Operation GhostMail represents one victim within the larger Laundry Bear campaign, or that the exploit/tooling was shared across operators; Proofpoint's assessment that the exploit was "gifted" by Russian intelligence rather than independently developed supports either reading. Treat "Operation GhostMail" and "Laundry Bear" as overlapping-but-not-confirmed-identical clusters until further infrastructure or code-level correlation is published.
Vulnerability: CVE-2025-66376
CVE-2025-66376 is a stored cross-site scripting (XSS) vulnerability in the Zimbra Collaboration Suite Classic UI, caused by insufficient sanitization of HTML content, specifically crafted tag structures and attribute values containing a CSS @import directive alongside other script-injection vectors. Per the CVE description, the vulnerability triggers when a user views a crafted email message in the Classic UI.
- Patched: ZCS 10.0.18 / 10.1.13, November 2025 (disclosed only as a generic "stored XSS" bug in release notes; no CVE assigned publicly until early January 2026).
- CVSS: 7.2 (High).
- KEV status: Added to CISA's Known Exploited Vulnerabilities catalog March 18, 2026, the day after Seqrite's public report.
- Exploitation window observed: At least July 2025 through approximately February 2026 for this specific campaign (Proofpoint); unpatched instances remain at risk from unrelated actors reusing the same flaw.
Zimbra and parent company Synacor did not respond to press inquiries about the delayed disclosure timeline.
Attack Chain
Stage 1: Delivery and the "Half-Click" Trigger
The attack begins with a phishing email (either an HTML attachment or HTML embedded directly in the message body) crafted to look innocuous. In the Seqrite-documented GhostMail incident, the lure was a routine internship inquiry, written in Ukrainian, purportedly from a fourth-year student at Ukraine's National Academy of Internal Affairs (the sending mailbox was itself likely compromised, based on header analysis). In the broader CL-STA-1114 activity Unit 42 observed, lures were instead styled as news-digest content ("Global News Digest: Business, Economics & Eurasia") designed to catch the recipient's attention.
Concealed inside the HTML (in the GhostMail sample, inside a <div style="display:none"> block) is a large Base64-encoded JavaScript payload. The exploit uses a tag-name bypass technique: @import tokens are stripped from inside tag names and attribute key/value strings, alongside decoy broken <script>/<style> tags and an HTML comment inserted mid-tag-name. This causes the webmail client's HTML sanitizer (AntiSamy, in Zimbra's case) to reconstruct a functional <svg onload=eval(atob(...))> payload from the fragmented tokens, bypassing regex-based inspection while remaining valid to a browser's actual HTML parser.
Critically, no click is required. Viewing or previewing the email in a vulnerable Zimbra Classic UI session is sufficient to trigger execution.
Stage 2: JavaScript Loader
The reconstructed payload is a self-executing function. It first checks for a marker ID (zmb_pl_v3_ in the GhostMail sample) to prevent double-injection, then decodes the outer Base64 layer with atob() and XORs it against a hardcoded key to recover the final-stage JavaScript. The decoded code is injected into the top-level document, escaping any webmail iframe sandbox and inheriting the full session context: cookies, localStorage, and same-origin SOAP API rights.
Stage 3: Browser-Resident Stealer
The final payload executes entirely in browser memory; nothing is written to disk. On each execution it generates a random 12-character session token to identify the victim across all subsequent C2 requests, then launches up to nine operations in parallel via Promise.all, maximizing data yield in the roughly 10-second window before a victim might close the tab:
- SendStartPing: notifies the C2 that execution has begun, letting the operator correlate session timing.
- gather_email: scrapes the
batchInfoResponsevariable Zimbra embeds on page load, falling back to aGetIdentitiesRequestSOAP call for all configured identities and aliases. - gather_environment: calls
GetInfoRequestto dump full server configuration (Zimbra version, account quota, enabled features, server hostname, account preferences) as a JSON blob. - gather_2fa_codes: calls
GetScratchCodesRequestto steal the account's backup 2FA recovery codes, enabling authentication even after a password reset. - gather_app_password: calls
CreateAppSpecificPasswordRequestto mint a new, persistently valid credential (observed namedZimbraWeb). This is the long-term access mechanism: it survives password resets and enables direct IMAP/API authentication indefinitely. - gather_device_status: calls
GetDeviceStatusRequestto enumerate all ActiveSync-connected mobile devices. - gather_oauth_consumers: calls
GetOAuthConsumersRequestto list every third-party OAuth application authorized on the account, revealing what other platforms and API-level access the victim has granted. - gather_autocomplete_password: injects two hidden, off-screen form fields (
autocomplete="username"/"current-password") and waits five seconds for the browser's own password manager to autofill them, then reads and exfiltrates whatever appeared. This is the only operation that does not require a stolen CSRF token, since it targets the browser rather than Zimbra's API. - enable_mail_protocols: calls
ModifyPrefsRequestto silently setzimbraPrefImapEnabled: TRUE, enabling IMAP access that the minted app-specific password can then use for ongoing mailbox surveillance from any IMAP client.
Every SOAP call is wrapped to return null on failure rather than throw, so one blocked operation doesn't abort the rest. Every exception, anywhere in the payload, triggers a POST to /v/p reporting the failing stage, error message, and stack trace back to the operator, giving Laundry Bear real-time debugging visibility into exactly which step failed on which victim.
Stage 4: Bulk Mailbox Exfiltration
The highest-impact operation, sendArchives, loops through the previous 90 days, downloading each day's non-junk mail from Zimbra's built-in export endpoint (/home/~/?fmt=tgz) and uploading each archive directly to a per-victim subdomain (js-[token].i.<C2 domain>/v/d). Two upload modes are implemented depending on browser capability: a streaming ReadableStream pipe for modern browsers, or a buffered array (capped at 500 MB) for older ones. Progress checkpoints are stored in localStorage (zd_comp_YYYY-MM-DD keys) so that if the tab is reopened, already-exfiltrated days are skipped and the operation resumes.
Stage 5: Exfiltration Channel
Two independent exfiltration channels run throughout: small structured values (session tokens, individual 2FA codes, error reports) are sent via Base32-encoded DNS queries, segmented into 60-character chunks forming hostnames of the pattern d-<token>.<key>.<base32_chunk>.i.<C2 domain>, ensuring data can egress even where outbound HTTPS is blocked; larger structured objects (server config dumps, mail archives) go via HTTPS POST to /v/d, with smaller beacon-style updates via POST to /v/p. A final sendFinishPing beacon confirms all operations completed, letting the operator measure total session duration and infer what was likely captured.
Timeline
| Date | Event |
|---|---|
| 2024 (assessed) | CL-STA-1114/Void Blizzard activity begins (broader campaign history, per Microsoft). |
| May 2025 | AIVD first identifies "Laundry Bear" as a distinct new Russian state-sponsored actor. |
| July 2025 | Zimbra-focused exploitation of CVE-2025-66376 begins (per joint advisory / Unit 42). |
| November 2025 | Zimbra silently patches the flaw in ZCS 10.0.18 / 10.1.13, described only as a generic stored XSS fix. |
| January 22, 2026 | Phishing email sent to Ukraine's State Hydrology Agency (the incident Seqrite later names "Operation GhostMail"). |
| Early January 2026 | NVD/MITRE publish the CVE-2025-66376 entry, months after the patch shipped. |
| February 2026 | Proofpoint assesses this exploit chain largely ceases, coinciding with Seqrite's detection. |
| March 17, 2026 | Seqrite Labs publishes "Operation GhostMail," attributing the Ukraine incident to APT28 with medium confidence. |
| March 18, 2026 | CISA adds CVE-2025-66376 to its Known Exploited Vulnerabilities catalog. |
| July 23, 2026 | CISA and 14+ allied nations' agencies publish a joint advisory on Laundry Bear's Zimbra campaign; Proofpoint publishes independent TA488 research. |
| July 23, 2026 | Unit 42 publishes CL-STA-1114 research with a full IOC set. |
| July 24, 2026 | Campaign IOCs appear in Securonix threat feed (8 IPs, 8 domains, "Reviewed & Validated"), triggering this internal triage. |
Indicators of Compromise
Network: IP Addresses
| IP Address | Source |
|---|---|
| 37.120.247.228 | Securonix / Unit 42 CL-STA-1114 |
| 193.238.152.66 | Securonix / Unit 42 |
| 104.248.134.194 | Securonix / Unit 42 |
| 185.86.79.95 | Securonix / Unit 42 |
| 216.252.238.104 | Securonix |
| 216.252.238.18 | Securonix / Unit 42 |
| 216.252.238.64 | Unit 42 |
| 194.156.103.193 | Securonix / Unit 42 |
| 64.226.124.190 | Securonix / Unit 42 |
Network: Domains
| Domain | Source |
|---|---|
| analyticemailmeter[.]com | Securonix / Unit 42 |
| emailanalytics.com[.]ua | Securonix / Unit 42 |
| synacorzimbra[.]nl | Securonix / Unit 42 |
| zimbrastat[.]com | Securonix / Unit 42 |
| mailnalysis[.]com | Securonix / Unit 42 |
| zmailanalytics[.]com | Securonix / Unit 42 |
| istc-cloud[.]com | Securonix / Unit 42 |
| zimbra-metadata[.]com | Securonix / Unit 42 |
| zimbrasoft.com[.]ua | Unit 42 / Seqrite (Operation GhostMail primary C2) |
Host Artifacts / Application-Layer
| Type | Value |
|---|---|
| Email marker ID | zmb_pl_v3_ (prevents double-injection) |
| localStorage key pattern | zd_comp_YYYY-MM-DD (exfil checkpoint) |
| Minted app-specific password name | ZimbraWeb |
| Seqrite AV signature | Script.Trojan.50486.GC |
| DNS exfil hostname pattern | d-[a-z0-9]{12}.i.<C2 domain> |
| Archive upload hostname pattern | js-[a-z0-9]{12}.i.<C2 domain> |
MITRE ATT&CK Mapping
| Tactic | Technique ID | Technique | Procedure |
|---|---|---|---|
| Resource Development | T1583.001 | Acquire Infrastructure: Domains | C2 domains registered shortly before observed use |
| Resource Development | T1586.002 | Compromise Accounts: Email Accounts | Lure emails sent from likely-compromised sender accounts |
| Initial Access | T1566.001 | Phishing: Spearphishing Attachment | HTML email/attachment carrying the embedded XSS payload |
| Execution | T1203 | Exploitation for Client Execution | CVE-2025-66376 triggered on email view (zero/half-click) |
| Execution | T1059.007 | Command and Scripting Interpreter: JavaScript | Browser-resident payload |
| Persistence | T1098.001 | Account Manipulation: Additional Cloud Credentials | CreateAppSpecificPasswordRequest mints persistent ZimbraWeb credential |
| Defense Evasion | T1027 | Obfuscated Files or Information | Base64 + XOR layered encoding, @import tag-name bypass |
| Defense Evasion | T1564.001 | Hide Artifacts: Hidden Files and Directories | Payload hidden in display:none HTML block |
| Credential Access | T1528 | Steal Application Access Token | GetOAuthConsumersRequest |
| Credential Access | T1539 | Steal Web Session Cookie | CSRF token theft from localStorage |
| Credential Access | T1111 | Multi-Factor Authentication Interception | Backup 2FA code theft via GetScratchCodesRequest |
| Credential Access | T1555.003 | Credentials from Password Stores: Web Browsers | Hidden autofill form-field harvesting |
| Discovery | T1082 | System Information Discovery | GetInfoRequest server fingerprinting |
| Discovery | T1087.003 | Account Discovery: Email Account | GetIdentitiesRequest / DOM scraping |
| Discovery | T1069 | Permission Groups Discovery | GetOAuthConsumersRequest |
| Discovery | T1120 | Peripheral Device Discovery | GetDeviceStatusRequest |
| Collection | T1114.002 | Email Collection: Remote | 90-day mailbox sweep |
| Collection | T1185 | Browser Session Hijacking | window.top.document iframe-sandbox escape |
| Collection | T1213 | Data from Information Repositories | Server config dump (zimbra_batch_analytics.json) |
| Exfiltration | T1041 | Exfiltration Over C2 Channel | HTTPS POST to /v/d and /v/p |
| Exfiltration | T1071.004 | Application Layer Protocol: DNS | Base32-encoded DNS exfiltration |
Key Takeaways
Zero-click is not hyperbole here. Most "sophisticated phishing" reporting still assumes a click, an attachment open, or a macro grant somewhere in the chain. This campaign requires none of that: previewing an email in a vulnerable session is enough. User training cannot mitigate this; patching and session/API-level monitoring are the only real controls.
Silent patching created the exposure window. Zimbra fixed the underlying bug in November 2025 but described it generically and did not secure a CVE identifier or public advisory until roughly two months later. Organizations tracking "patched" status by changelog review rather than CVE feeds would have had no signal to prioritize this update, and Laundry Bear had a multi-month head start as a result.
The malware-free design defeats file-based detection entirely. There is no binary to hash, no process to flag, no file to sandbox. This is a browser session compromise, full stop. Detection has to live at the network layer (domains, IPs, DNS patterns) and the SOAP API layer (anomalous GetScratchCodesRequest/CreateAppSpecificPasswordRequest calls), not the endpoint.
Persistence survives the obvious remediation. A minted app-specific password and silently enabled IMAP both survive a password reset. If your incident response playbook for a compromised Zimbra account stops at "reset password," this campaign demonstrates exactly why that is insufficient: app-specific passwords and protocol settings must be explicitly audited and revoked.
Attribution is still settling. Whether "Operation GhostMail" (APT28, medium confidence) and "Laundry Bear" (Void Blizzard/CL-STA-1114) represent the same operator, shared tooling across operators, or genuinely separate clusters using intelligence-supplied exploits is not yet resolved publicly. Treat both names as referring to the same threat model and IOC set for defensive purposes regardless of how attribution eventually shakes out.
References
-
Unit 42. (2026, July 23). Russian Global Webmail Espionage. Palo Alto Networks. https://unit42.paloaltonetworks.com/russian-webmail-espionage/
-
Wright, R. (2026, July 23). Russian Hackers Exploit Zimbra Zero-Day Against US, Ukraine Targets. Dark Reading. https://www.darkreading.com/cyberattacks-data-breaches/russian-hackers-zimbra-zero-day-us-ukraine-targets
-
Prakki, S. R., & Jivani, K. (2026, March 17). Operation GhostMail: Russian APT exploits Zimbra Webmail to Target Ukraine State Agency. Seqrite Labs. https://www.seqrite.com/blog/operation-ghostmail-zimbra-xss-russian-apt-ukraine/
-
Cyber.gov.au / Australian Cyber Security Centre. (2026, July). Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite. https://www.cyber.gov.au/about-us/view-all-content/alerts-and-advisories/russian-state-supported-cyber-actors-conduct-phishing-campaign-targeting-users-of-zimbra-collaboration-suite
-
CISA. (2026, July 23). Joint Cybersecurity Advisory AA26-204A: Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite. https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-204a
-
Proofpoint. (2026, July 23). TA488 Targets Zimbra Mailservers With Half-Click Exploits. https://www.proofpoint.com/us/blog/threat-insight/ta488-targets-zimbra-mailservers-half-click-exploits
-
AIVD / MIVD. (2025, May 27). Advisory: AIVD and MIVD Identify New Russian Cyber Actor. https://www.aivd.nl/site/binaries/site-content/collections/documents/2025/05/27/aivd-en-mivd-onderkennen-nieuwe-russische-cyberactor/Advisory+AIVD+en+MIVD+Public+report+on+new+cyber+actor.pdf
-
Microsoft. (2025, May 27). New Russia-Affiliated Actor Void Blizzard Targets Critical Sectors for Espionage. https://www.microsoft.com/en-us/security/blog/2025/05/27/new-russia-affiliated-actor-void-blizzard-targets-critical-sectors-for-espionage/
-
NIST National Vulnerability Database. (2026). CVE-2025-66376. https://nvd.nist.gov/vuln/detail/CVE-2025-66376
-
ESET / WeLiveSecurity. (2024). Operation RoundPress. https://www.welivesecurity.com/en/eset-research/operation-roundpress/ (referenced by Seqrite for SpyPress.ZIMBRA payload-structure comparison)
-
Internal: 2026-07-24 Morning Threat Intelligence Brief, Daily Briefs folder.
