久しぶりにブログを更新すると色々書きたくなるものですね。ということでまだこのブログでは紹介したことがないDOMベースXSSのオープンソースツール、DOMinatorを紹介します。最近の商用ツールも類似の機能をサポートしています。
http://code.google.com/p/dominator/
DOMベースXSS: JavascriptはDOMを利用してHTMLを動的に変更できます。この機能を利用するとブラウザ側のJavascriptで動的に変化するWebサイトを構築できます。HTMLなどを修正するとデータにユーザが入力が含まれているとプログラマが意図しないJavascriptが実行できます。
要はクライアントサイドのJavascriptインジェクション攻撃の事です。
Javascriptは非常に柔軟な言語で便利な反面、セキュリティチェックが非常に難しい言語でもあります。DOMinatorはJavascriptの柔軟性を上手く利用して、DOMベースのXSSを検出します。Javascriptの入出力を監視し、DOMベースXSSが可能である箇所を見つけ出します。百聞は一見に如かず。デモ動画を見ればDominatorを使ったDOMベースXSSチェックがどのように便利であるのか分かります。
http://www.youtube.com/watch?v=f_It469LUFM
(動画に音声はありません。説明はTEXTエディタに書いてあるのでHDにして最大画面にして見てください)
どうですか?ソースコードを読んで解析するより何倍、いえ何十倍も楽にDOMベースのXSSを検出できました。
簡単そうに見えますが、使いこなすには色々コツと知識が必要です。既に情報が古くなっていますが
http://code.google.com/p/domxsswiki/
の
http://code.google.com/p/domxsswiki/wiki/LocationSources
などを利用してJavascriptインジェクションが可能か調べると、サイトが脆弱であるか分かります。あまり使いこなし方が分からなくても有用なツールです。Javascriptで動的なサイトを構築している方、特にユーザがコントロールできる情報使いJavascriptでページを操作している方は一度DOMinatorを使ってみると良いでしょう。
ところで、PROVE for PHPのマイナーバージョンアップをしました。PDOなどの内部オブジェクトの対応はまだですが、Webコンソールを改善しました。(まだまだ改善が必要で、どんどん改善します)PROVEもDOMinatorに似ていると言えば似ていると言えます。PHPの内部動作を詳細に記録し、差分を取ることでPHPやアプリが正しく動作している事が確認できます。サイトにはVMwareイメージもあるので試してみてください。バグを見つけたら教えてください!