変わっ
 変わっとは

変わっとは yohgaki's

私が知らなかっただけかもしれませんが、これにはかなり驚きました。いろんな所で問題が指摘されていますが、ECMAScriptにXML機能を追加したのはどうなんでしょうね....


【参考サイト名】 yohgaki's blog - いろいろ変わったXSSがありますが...

私が知らなかっただけかもしれませんが、これにはかなり驚きました。いろんな所で問題が指摘されていますが、ECMAScriptにXML機能を追加したのはどうなんでしょうね.... 確かにかなり便利なのですが以下のコードでスクリプトが実行されることはほとんど知られていないでしょうね。
好むと好まざる関係なくFirefox 1.5から使えるのでWeb開発者は知っておかなればならないです。
XSSで重要なのはHTMLにユーザが入力したデータを表示するときにエスケープしていないとスクリプトを記述できてしまうということだと思いますが、この例だとユーザの入力がScriptタグの間に表示されないといけないわけで、その状態ではXSSも何もないと思うのですが。
それとも、これをどうにかすればエスケープをちゃんとしてても、Scriptが実行できてしまうのでしょうか?
まず前提条件ですが、すべて正しくエスケープしていればスクリプトが実行されないのは当然予想される結果です。SQLインジェクションと一緒で, 「' or 1=1 --」で攻撃可能になりますと解説して「エスケープすればできない」と言われれば「はい、その通りです」となるのと同じです。
割と普通にエスケープすれば動作しないとは思いますが、ブラックリストに頼っているような実装(もともとブラックリストに頼る事自体問題ですが)だと実装によってはスクリプトが実行できてしまう場合もあるかも、と思っています。
と言ったコードでしょうね。document.writeを使っている時点で、ちょっとそれは.... と言うことでになります。はっきり言って私もinnerHtmlとかで使えるような場面があるのは分かりません。無いだろうとは思っていますが脆弱性は組み合わせて使うと思ってもいない効果を生む場合があります。E4Xで面白い形式の文字列でJavaScriptが動作する事を知っておくのは必要だと思います。
試されていないようですが上記のJavaScriptを含む文字列はscriptタグで囲まなくても実行できます。少なくともイベントハンドラやjavascript:では動作します。多分、expressionでも動作するでしょう。つまり、もしE4Xを除けば完璧なブラックリストであったとしてもE4Xサポートを悪用した攻撃なら通過する可能性がある、と考えられます。
また攻撃手法の一つにIPS/WAF「フィルタのすり抜け」があります。上記の文字列は様々なパターンのフィルタのすり抜けの可能性を示しています。IPS/WAFはブラックリスト型のセキュリティ対策なので当たり前といえばその通りですが、セキュリティ上の問題として考察に値すると考えています。
正直、安全性の確認が面倒過ぎするのでユーザ入力を含むJavaScriptの生成はお勧めしない、というのが現在のスタンスです。
実際のところFirefoxのE4X実装だけでもどうすればスクリプトの実行が可能なのかさえ全部できっていないと思っています。# どうなんでしょうね。
今のJavaScript実装でさえ検証するのは十分面倒なのに、複数ブラウザのE4X実装の検証などは想像しただけでも面倒です... 少なくとも私は積極的に検証しません。検証している方の情報収集するのがほとんどだと思います。検証もせず、情報収集もせず、厳しい入力の検証も行わず、ダイナミックにJavaScriptを生成すると痛い目に遭う確率が高くなると思います。
とりあえずこのエントリは「JavaScirptのXMLサポートには注意が必要である」事を伝えるのが目的です。

 

戻る

Copyright © 2007 financial.japan-netshop.com