CSS Injection

CSS Injection

Abuse CSS
Category Attack

CSSインジェクション #

warning

ここで紹介される一連のXS-Leaksは対象ページでのCSSインジェクションを必要とします。

CSSインジェクションの様々なベクトルの中で、最もよく見られるのは、CSSセレクタの悪用です。これらは、特定のHTML要素にマッチし、選択するための表現として使用することができます。例えば、セレクタ input[value^="a"] は、input タグの値が文字 “a” で始まっている場合にマッチングされます。したがって、ある CSS セレクタが表現にマッチするかどうかを検出するため、攻撃者は background@import などのプロパティを使用して、自身の管理するウェブサイトへのコールバックをトリガーすることができます。1 2 このマッチングプロセスは簡単にブルートフォースされ、文字列全体に拡張できます。

文字の並びに独自の表記がある場合、フォントの合字を悪用して、ページに含まれるJavaScriptなどがリークされる可能性があります。

* { display: block; }のようなスタイルを適用すると、stylescriptなどの通常は隠されているHTMLタグも、テキストとして表示されることがあります。したがって、それらの内容もリークされる可能性があります。

対策 #

  • 攻撃者がコントロールするコンテンツを独立したドキュメントに置きます。これは srcdoc属性を持つiframeを使って行うことができます。オプションで、コンテンツを独自のオリジンに分離するためのサンドボックス属性を含めることができます。
  • CSSインライナーを使って、グローバルなスタイルが変換されるようにします。
SameSite Cookies (Lax)COOPFraming ProtectionsIsolation Policies

References #


  1. CSS Injection Primitives, link ↩︎

  2. HTTPLeaks, link ↩︎