Blind CSS Exfiltration(ブラインドCSS流出)とは何か:未知のWebページから“CSSだけ”で情報を抜き取る発想
元ソース:PortSwigger Research「Blind CSS Exfiltration: exfiltrate unknown web pages」(https://portswigger.net/research/blind-css-exfiltration)
概要
「Blind CSS Exfiltration」は、攻撃者が対象ページのDOMや表示内容を直接“見られない”状況でも、CSSの仕組みを利用して情報を段階的に推測・外部送信していくという攻撃クラスを扱った研究である。PortSwigger Researchの解説記事では、流出が進む様子を示すデモ(GIF)とともに、この手法がどのように成立するかを説明している。
ここで重要なのは、データを盗む主体がJavaScriptではなくCSSに寄っている点だ。一般に「CSSは見た目の指定」というイメージが強い一方で、近年のCSS機能やブラウザ挙動、そして“外部リソースを参照できる”という性質が組み合わさると、条件分岐や存在確認のような推測が成立しうる。スライド資料では「History of CSS attacks(CSS攻撃の歴史)」から始めて、blind exfiltrationの考え方、検知、CSSでの抽出手法へと段階的に整理している。
詳細
スライド(2024/01/25付)では、Blind CSS Exfiltrationの中核として「Extract data with CSS(CSSでデータを抽出する)」を掲げ、さらに具体的な要素として「:has selector」や「Using multiple backgrounds(複数背景の利用)」といった話題が挙げられている。つまり、単に“CSSインジェクションができる”というだけで終わらず、条件に応じてスタイル適用を変化させたり、複数の参照を使い分けたりすることで、未知のページ内部の状態を少しずつ切り分けていく方向性が示唆される。
また、PortSwiggerの関連研究として「Inline Style Exfiltration: leaking data with chained CSS conditionals」では、“chained CSS conditionals(連鎖したCSS条件)”という言い方で、CSS条件をつないで情報を漏えいさせる観点が整理されている。Blind CSS Exfiltrationとあわせて読むことで、CSSの条件的な表現が“推測・選別・送信”の流れに組み込まれていく設計思想が理解しやすくなる。
さらに「uBlock, I exfiltrate: exploiting ad blockers with CSS」では、広告ブロッカー(uBlock Origin)における制約を回避し、CSSベースの新しい悪用手法でスクリプトや属性からの抽出、さらにはMicrosoft Edgeからのパスワード窃取にまで踏み込めたことが述べられている。これは、単一のサイト実装バグに限らず、周辺ソフトウェア(拡張機能やフィルタリング機構)の前提を突いたCSS悪用が現実に成立し得ることを示す材料として位置づけられる。
Blind CSS Exfiltrationの話題は講演としても扱われており、YouTube上の「Gareth Heyes – Blind CSS Exfiltration: Stealing user data ...」では、純粋なCSSを用いて未知のWebページからデータを取り出す“新しい攻撃クラス”として紹介されている。記事・スライド・講演という複数の形で提示されている点は、研究の意図が単なる理論紹介ではなく、実際の攻撃/防御の議論(スライドにある「Detect it(検知)」を含む)へつなげることにある、という読み取りにもつながる。
この研究群が示唆する実務上のポイントは、「CSSを“安全な表現”として扱いすぎない」ことに尽きる。Blind CSS Exfiltrationは“見えない状態でも成立する”という性質上、攻撃者がUIを操作して盗むのではなく、ページ内部の情報をCSSの条件表現で切り分け、外部参照の形で痕跡を残す(=送信する)方向へ設計できてしまう、という問題提起になる。特に、ユーザー入力や外部コンテンツがスタイルに影響できる経路(記事・プロフィール・テンプレート・ウィジェット等)がある場合、想定外のCSS解釈・適用範囲が“情報の境界”をまたぐリスクになり得る。
そのため、Blind CSS Exfiltrationを「CSSインジェクションの延長」ではなく、「CSSが持つ条件性・参照性を悪用したデータ抽出の体系」として把握することが重要になる。PortSwigger側の資料では、歴史的文脈から具体的な抽出・検知の話題までを一続きに扱っているため、個々のテクニック名だけを追うのではなく、“どの前提が崩れると何が可能になるのか”を線で理解する読み方が有効だろう。
出典
- 元ソースBlind CSS Exfiltration: exfiltrate unknown web pagesPortSwigger Research
- [PDF] Blind CSS Exfiltration - PortSwiggerportswigger.net
- Inline Style Exfiltration: leaking data with chained CSS conditionalsportswigger.net
- [XML] https://portswigger.net/sitemap.xmlportswigger.net
- uBlock, I exfiltrate: exploiting ad blockers with CSS - PortSwiggerportswigger.net
- Gareth Heyes – Blind CSS Exfiltration: Stealing user data ... - YouTubeyoutube.com