2014-05-08
■[SECURITY] mXSS - Mutation-based Cross-Site-Scripting のはなし

ここ数年、XSS業界の最先端で盛り上がっている話題として mXSS というものがあります。mXSS - Mutation-based XSS とは、例えば innerHTML などを経由してすでに構築されているDOMツリーを参照したときに、本来のDOM構造とは異なる結果を得てしまい、そのためにHTML構造の破壊を引き起こすという類のDOM based XSSの亜種とも言えます。
mXSSに関しては以下の資料などが参考になります。
- The innerHTML Apocalypse
- mXSS Attacks: Attacking well-secured Web-Applications by using innerHTML Mutations
どちらの資料にも掲載されていますが、mXSSのきっかけとなったのは 「教科書に載らないWebアプリケーションセキュリティ(1):[これはひどい]IEの引用符の解釈 (1/3) - @IT」にも記載した、Internet Explorer におけるバッククォートの解釈の問題で、典型的にはIE8以下のようなコードで問題が発生します。
<div id="div1"> <input type="text" value="``onmouseover=alert(1)"> …攻撃者がvalue属性を自由に設定可能 </div> <div id="div2"></div> <script> document.getElementById("div2").innerHTML = document.getElementById("div1").innerHTML; </script>
このように、innnerHTMLなどを通じてHTMLを取得した場合に、本来のDOM構造とは異なる構造を表すHTML文字列が取得できてしまうという点がmXSSの肝となります。もしかすると「文字列」だけに限らない可能性はありますが、いずれにしろ本来のDOM構造とは異なるDOM構造の再構築によるXSSというのが重要な点です。
また、mXSSという脆弱性の原理そのものはIEに限定されないという点にも注意が必要です。
さらに、Gareth Heyes氏による Shazzerを使っての 様々なmXSSの攻撃ベクターを紹介する記事も参考になりますので、mXSSに興味のある方は参照しておきましょう。
HTML5によるJavaScriptコード量の増加に伴い、DOM based XSSも増加し、さらにこういった特殊なXSSが増えるのは、攻撃者視点としては非常に面白いですね! Enjoy!
- 19 http://t.co/j3cukRSpQz
- 3 http://pipes.yahoo.com/pipes/pipe.info?_id=e4c70514b5136c08ae93591f390be2e2
- 3 http://t.co/bZ5RRLbi60
- 1 http://a.hatena.ne.jp/connect24h/
- 1 http://a.hatena.ne.jp/mitsuman/
- 1 http://api.twitter.com/1/statuses/show/464216829414498305.json
- 1 http://api.twitter.com/1/statuses/show/464219267638910976.json
- 1 http://app-mgng-local.rhcloud.com:8081/unko/
- 1 http://b.hatena.ne.jp/add?mode=confirm&title=mXSS - Mutation-based Cross-Site-Scripting %u306E%u306F%u306A%u3057 - %u8449%u3063%u3071%u65E5%u8A18&url=http://d.hatena.ne.jp/hasegawayosuke/20140508/p1
- 1 http://pipes.yahoo.com/pipes/pipe.run?_id=3pdlrYZR3hGa1lgxBRNMsA&_render=rss