【テクニカル・上級編】mXSS(Mutation XSS)の発生メカニズムとブラウザのパース挙動 – アプリケーションセキュリティ & 安全な開発防御ガイド

mXSSの深淵:ブラウザの「親切心」を悪用するDOM変異攻撃のメカニズム

セキュリティエンジニアとして現場に立っていると、「サニタイズは完璧だ」という言葉ほど信用できないものはないと痛感する。特に、クライアントサイドのフィルタリングを過信しているプロジェクトは、ほぼ例外なくどこかで足をすくわれる。

今日のテーマは、多くのフレームワークが裏で抱える時限爆弾、mXSS(Mutation XSS)だ。これは「無害なはずの文字列が、ブラウザのDOM構築プロセスで悪意あるコードに変異する」という、極めて直感的でない脆弱性である。

ブラウザの「正規化」という名の罠

mXSSの本質は、サーバーサイドでサニタイズされた安全なHTMLが、ブラウザのinnerHTMLや特定のDOM操作を通じて「再パース」される際に、ブラウザが勝手にHTMLを「修正(正規化)」してしまう挙動にある。

例えば、以下のような入力を考える。