注目

研究・分析 / RESEARCH / EMAIL SECURITY

メール本文が境界を越える — CSS攻撃でWebメールの防御を突破しパスワードとトークンを窃取する研究

HTMLメールの中身がメッセージ境界を越えてWebメールのインターフェースに干渉する。Outlook・Gmail・Yahoo Mail・Proton Mailなどを横断する攻撃チェーンがBlack Hat USA 2026で公開され、パスワード窃取、トークン漏えい、AI連携メールの乗っ取りまで実証された。

メールの本文に含まれるHTMLやCSSが、メッセージの境界を越えてWebメールのインターフェースに干渉する。PortSwiggerの研究者Gareth Heyesは、Black Hat USA 2026で、Outlook、Gmail、Fastmail、Proton Mail、Yahoo Mail、AOL Mailを横断する一連の攻撃チェーンを公開した。手法はパスワードの窃取、サードパーティアカウントの乗っ取り、トークンの漏えい、信頼されたUI操作のハイジャック、メールを読むAIツールの操作まで多岐にわたる。これは概念実証(PoC)研究であり、実地悪用の報告はない。

2つの研究経路

研究は2つの経路を扱う。

  1. Webメールが許可しているHTML/CSSを悪用する — サニタイザーを通った「許可済み」の要素を、アプリケーションのJavaScriptが新しいDOMノードへ変換し、CSSの許可リストの外にあるコードを生み出す
  2. サニタイザーの検証とブラウザの最終的な解釈のズレを突く — 検証時には問題ないと判定されるが、実際に描画されると意図しない構造になる

どちらの経路も、「信頼できないメッセージ」と「信頼されたインターフェース」の境界を越えることを目的としている。

サニタイザー迂回の手法を示す図(出典: PortSwigger Research)
サニタイザーの検証とブラウザの解釈のズレを突く手法。原典(PortSwigger Research)

Outlook — パスワード入力欄を偽装するチェーン

最も衝撃的なチェーンの1つが、OutlookとFirefoxを組み合わせたパスワード窃取だ。許可されたlabel要素がメッセージ外のコントロールをトリガーし、アプリケーションのJavaScriptがサニタイズ済みのカスタム属性を新しいDOMノードへ変換する。そこにメディアクエリのパーストリックを組み合わせることで、攻撃者は任意のCSSを注入できる。

最終的に、攻撃者はselect要素をパスワード欄に見せかける。Firefoxは選択肢のタイマーを要素が画面外へ移動するとリセットする性質があり、これを利用してほぼリアルタイムで入力文字を捕捉する。偽装されたMicrosoftサインイン画面に入力されたパスワードは、そのまま攻撃者へ送られる。

CSSによる辞書キーロガーのPoC画面(出典: Portswigger Research)
辞書キーロガーのPoC。パスワード欄を装ったselect要素が入力値をリアルタイムに捕捉する。原典(PortSwigger Research)

Yahoo/AOL — ペースト競合でログイントークンを奪う

Yahoo MailとAOL Mailでは別の経路が見つかった。Firefoxでは、貼り付けられたHTMLがサニタイズされる前に、アクティブなCSSを一時的に保持できる。実証では、攻撃者がMediumのメールログインフローを開始させ、被害者に攻撃者製のCSSをクリップボードへコピーさせたうえで、YahooやAOLの下書きへ貼り付けさせる。

この結果生じるリクエストは、12文字のログイントークンのうち十分な情報を攻撃者のサーバーへ送り、攻撃者はそれを再構成して被害者としてサインインできる。

CSPがある環境でも漏えいさせる「クリック経由」の手法

Content Security Policy(CSP)が外部リソースをブロックする環境向けに、クリックベースの漏えい手法も紹介されている。スタイル注入が可能で、メール内に数値トークンがテキストで描画されている場合、CSSで「どの数字が何回出現するか」を判定し、一致しないリンクを隠して一致するリンクだけをページに残す。被害者がそのリンクをクリックすると、数字と出現回数が攻撃者のサーバーへ送られる。

AIがメールを読む時代の新しい攻撃面

AI連携メールは、研究のもう1つの焦点だ。

  • Gmail × Claude Cowork(Anthropic) — Gmailのimage-set()フォールバックがサニタイズを迂回して外部リクエストを発生させる。Heyesと同僚のPete Hendyは、これを間接プロンプトインジェクションのメールと組み合わせ、Gmailコネクタ経由でClaude Coworkに処理させた。実証では、攻撃者がSlackトークン確認メールをトリガーし、被害者がCoworkにメール処理を依頼すると、注入された指示がトークンを取得してHTML下書きに配置し、閲覧時に漏えいさせた
  • Fastmail × OpenAI Atlas — CSSの擬似要素と不透明度で、人間には無害なテキストが見え、モデルには隠し指示が読める状態を作る。被害者がAtlasに翻訳を依頼すると、隠れたプロンプトがタブを開いて被害者名をURLフラグメントにエンコードさせた(OpenAIはAtlasの廃止を発表しており、2026年8月9日で停止予定)

各社の対応状況と防御の指針

研究者が再テストした時点での状況は次のとおり。

  • Fastmail — CSSミューテーションのバグ2件を修正済み
  • Proton Mail — プロキシ迂回は再テスト時に機能しなくなっていた
  • Outlook — ラベルジャッキングは論文公開時点(8月6日)でも動作
  • Gmailimage-set()の迂回は同じく動作

Webメール事業者向けの防御指針としては、HTMLメールをサンドボックス化したiframeに隔離し、CSS、カスタム属性、selectメニュー、画像リクエストを厳格に制限することが挙げられている。具体的には、CSS検証の文字許可リスト、カスタム属性を許可する前の「CSSガジェット」のチェック、危険なセレクタのブロックなどだ。

利用者側では、パスワードを再入力させるメール内画面(サインイン画面の偽装)と、AIアシスタントに処理させるメール(プロンプトインジェクションの運び屋になり得る)への警戒が有効になる。PoC一式はPortSwiggerの公開リポジトリで入手できる。

メールは「読むもの」から「実行されるもの」へ変わってきている。本文に書かれた見た目の外側で、CSSはインターフェースそのものを書き換えられる。

出典: PortSwigger Research — CSS: The Bomb Inside Your Inbox / PoCリポジトリ(GitHub)

この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。