×
サイバー攻撃について
  • HTMLパーサーのエラー補正

  • 名前空間の切り替え

  • HTML、SVG、MathMLの混在

  • 不正な入れ子

  • サニタイザーとブラウザーの解析差

  • サニタイズ後の再シリアライズ

  • innerHTMLによる再解析

対策

  • 正規表現だけでHTMLを除去しない

  • 保守されているHTMLサニタイザーを使う

  • サニタイズ後のHTMLを再加工しない

  • innerHTMLの利用を減らす

  • ライブラリを更新する

  • SVGやMathMLが不要なら許可しない


SVG XSS


SVGは画像形式として扱われますが、XMLベースの文書です。

利用方法によっては、イベント属性、リンク、外部参照、foreignObjectなどを持てます。

危険になりやすい構成は次のとおりです。

  • 利用者がアップロードしたSVGを同一オリジンで配信

  • インラインSVGへ利用者入力を挿入

  • SVGを汎用HTMLサニタイザーだけで処理

  • SVGをHTML文書として誤配信

  • SVG内のURLやイベント属性を許可

画像ファイルだから安全とは限りません。


MathML XSS


MathMLは、Webページで数式を表現するマークアップです。

HTML、SVG、MathMLの間では名前空間が切り替わります。

この境界は解析規則が複雑であり、mXSSやサニタイザーバイパスの研究対象になります。

MathMLが不要なサービスでは、許可リストから除外する方が安全です。