ZimbraのCVE-2025-66376悪用で過去90日分のメールと2FAコードが盗まれていた
目次
TL;DR
影響 Zimbra Collaboration 10.0.18未満、10.1.13未満のClassic UI。細工されたHTMLメールを開くかプレビューすると、認証済みWebメールセッション内でJavaScript実行
対応 10.1系は2026年7月20日公開の10.1.20へ更新、サポート終了の10.0系は10.1系へ移行。更新までClassic UIを止め、別のメールクライアントを使用
確認 /opt/zimbra/log/mailbox.logのSOAP呼び出し、ZimbraWebアプリ固有パスワード、2FAスクラッチコード取得、IMAP有効化、zd_comp_YYYY-MM-DD、攻撃者の受信サーバー(C2)へのDNS・HTTPS通信
Zimbra Classic UIの保存型XSS、CVE-2025-66376は、少なくとも2025年7月からロシア政府支援のメール窃取に使われていた。
Zimbraは2025年11月6日の10.1.13と10.0.18で修正した。CISAは2026年3月18日に実悪用が確認された脆弱性カタログ(KEV)へ追加し、米連邦政府機関の対応期限を4月1日と定めた(期限は経過済み)。
2026年7月23日には米NSA、FBI、CISAと各国機関が共同アドバイザリAA26-204Aを公開し、攻撃グループをLAUNDRY BEAR、独自ツール群をUlejと呼んだ。
共同アドバイザリは、同じ活動に重なる業界側の追跡名としてVoid Blizzard、CL-STA-1114、TA488も挙げている。
ただし、各組織が追う全活動が1対1で一致するとは限らないと注記している。
ロシア系の認証情報窃取はロシアGRU APT28のTP-LinkルーターDNSハイジャックでも書いた。あちらはネットワーク側でMicrosoft 365の認証情報を取る手口だった。
今回はWebメールクライアントそのものが入口で、メールを読む画面の中でメールと2FAの回復手段が盗まれる。
メール本文の@importがsvg onloadに戻る
CVE-2025-66376は、メール本文として保存された悪意あるコードが閲覧時に動くクロスサイトスクリプティング(保存型XSS)だ。原因はZimbra Classic UIのHTMLサニタイザにある。
細工されたHTMLメールの中で、攻撃者はsvg onloadのような実行可能なタグを、偽のCSS @import とHTMLコメントで細かく分断する。
Zimbra側の処理はその断片を危険なタグとして扱えず、@import部分を落とした後に残った文字列がブラウザ上で再び<svg onload=eval(atob(...))>の形につながる。
共同アドバイザリは攻撃基盤を含む独自ツール群をUlej、Proofpointはブラウザで動く悪意あるJavaScript本体をZimReaperと呼んでいる。収集サーバー側の仕組みはFlowerbedだ。
リンククリックや添付ファイル実行はいらない。
脆弱なClassic UIでメールを開く、またはプレビューするだけで、JavaScriptはそのユーザーのログイン済みZimbraセッションとして動く。
NVDはメールを開く行為をユーザー操作に数え、CVSS 6.1のUI:R(ユーザー操作あり)としている。一方、MITREは7.2のUI:N(ユーザー操作なし)だ。
Proofpointはメール閲覧だけで実行される点を「ハーフクリック」、Unit 42はリンクや添付を開く追加操作がない点を「ゼロクリック」と表現している。
flowchart TD
A["細工されたHTMLメール"] --> B["Zimbra Classic UIで表示"]
B --> C["CSS @import断片を<br/>サニタイザが処理"]
C --> D["残った文字列が<br/>svg onloadとして再構成"]
D --> E["Ulej<br/>ZimReaperを実行"]
E --> F["CSRFトークン<br/>自動入力パスワード<br/>2FAスクラッチコード"]
E --> G["GALを総当たり"]
E --> H["直近90日分のメールを<br/>TGZでエクスポート"]
F --> I["DNS問い合わせでC2へ送信"]
G --> I
H --> I
メール本文の外にアカウント側の変更が残る
ZimReaperは、ログイン中のユーザーとしてAPIを呼び出すためのCSRFトークンと、ブラウザの自動入力パスワードを拾う。Zimbra APIから2FAスクラッチコードも取得する。
スクラッチコードは、通常の2FAデバイスが使えないときにログインを回復するための予備コードだ。
パスワード変更とは別に、盗まれたスクラッチコードを失効して再発行する。
さらに、CreateAppSpecificPasswordRequestを使ってZimbraWebという名前のアプリ固有パスワードを作る。
アプリ固有パスワードは、IMAP、POP3、SMTPのようなメールクライアント用に発行される別パスワードだ。
攻撃者は2FAを通らず、IMAP、POP3、SMTPでメールアクセスを続けられる。
Seqriteが2026年1月22日に受信されたウクライナ政府機関宛てメールを解析した事例では、攻撃コードがzimbraPrefImapEnabledをTRUEへ変えていた。
IMAPが普段無効な組織なら、この設定変更がアカウント側に残る。
逆に全社でIMAPを使っている環境では、ZimbraWebのような名前、作成時刻、作成元IP、SOAP API呼び出しを突き合わせる。
メール本文も一括で持ち出されていた。
Proofpointの解析では、組織のグローバルアドレスリスト(GAL)を2文字ずつ総当たりしてメールディレクトリを集め、直近90日分のメールをZimbraのエクスポート機能でTGZ化してC2へPOSTしていた。
CSRFトークンやパスワード類はBase32化してDNS問い合わせで送り、共同アドバイザリが解析したUlejでは同じ情報をHTTPSでも送っている。
既知のC2ドメインに対する長いランダム風サブドメインの問い合わせはHTTPログに出ないため、DNSログを別に調べる。
Classic UIは10.1.20へ更新する
Zimbraの10.1.13リリースノートには、CVE-2025-66376として「Classic UIでCSS @importを悪用できる保存型XSSを修正」と載っている。
影響範囲はZCS 10.0の10.0.18未満、10.1の10.1.13未満。
10.0系は2025年12月31日にサポート終了(EOL)となり、それ以降はセキュリティ更新が提供されない。
2026年7月時点のZimbra Security Advisoriesでは、Classic Web ClientまわりのXSS修正がその後も続いている。
10.1.17と10.1.19にもメール表示や添付プレビューに絡むXSS修正があり、10.1.20はClassic Web Clientの保存型XSSをさらに4件修正した。
CVE-2025-66376の修正条件は10.1.13以上だが、Classic UIを使い続ける環境は10.1.20へ更新する。
Ghost CMSのCVE-2026-26980悪用のときは、記事本文に挿入されたJavaScriptとAPIキーを更新とは別に処理した。
Zimbraでも、10.1.20へ更新した後に、作られたアプリ固有パスワードと2FAスクラッチコード、変更されたIMAP設定がそのまま残る。
これらの失効・復旧は、流出済みメールの範囲特定と合わせて個別に行う。
ログ・アカウント・端末で確認する痕跡
脆弱だった期間にClassic UIで開かれた可能性があるメールは、Proofpointが公開した悪意あるコード検出用のYARAルールを使い、分断された@import断片とsvg onload再構成のパターンで洗う。
受信しただけのメールは隔離し、メールをプレビューしたアカウントは侵害調査と資格情報失効の対象にする。
共同アドバイザリが示す既定の確認先は/opt/zimbra/log/mailbox.logだ。
短時間に同一ユーザーから出た多数のSearchGalRequest、CreateAppSpecificPasswordRequest、GetScratchCodesRequestを追う。
共同アドバイザリは、Webメール本体が必要としないZimbraWebという名前のアプリ固有パスワードを侵害痕跡としている。
攻撃活動が見つかった組織に対し、共同アドバイザリは全ユーザーのアプリ固有パスワードと2FAスクラッチコードを失効し、全従業員のパスワードを変更するよう勧告している。
セッション無効化、zimbraPrefImapEnabledが意図せずTRUEになったアカウントの復旧、悪意あるメールの隔離も分けて実施する。
利用者端末ではZimbraページのlocalStorageにあるzd_comp_YYYY-MM-DDを確認する。
これは攻撃コードが日別のメール取得完了を記録するキーで、流出した日付の特定に使える。
Unit 42と共同アドバイザリが公開した9ドメインと9 IPは、過去の通信を探す手がかりになる。
共同アドバイザリも、公開された侵害指標(IOC)は過去の帰属確認用で、IPやドメインは既に変わっている可能性があると注意している。
Proofpointは、C2ドメインがZimbraやメール分析サービスに似た名前を使い、DNS経由でBase32化した値を送っていたと説明している。
利用者端末や組織のDNSリゾルバーから出たd-と12文字の識別子で始まるサブドメイン、仮想専用サーバー(VPS)への大量送信、新規ドメインへの急な接続、Mullvad VPN経由のWebメールアクセスを突き合わせる。
参考
- Joint Cybersecurity Advisory AA26-204A: Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite
- The Hacker News: Russian Espionage Group Exploited Zimbra Zero-Day to Steal Mail and 2FA Codes
- Proofpoint: TA488 Targets Zimbra Mailservers with Half-Click Exploits
- Unit 42: Russian Global Webmail Espionage
- Seqrite: Operation GhostMail
- Zimbra Releases 10.1.13
- Zimbra Releases 10.1.20
- Zimbra Security Advisories
- NVD: CVE-2025-66376