SQLインジェクション対策はおすみですか?
開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、
脆弱性発見後の適切な対策まで
トップ «前の日記(2007-12-05) 最新 次の日記(2007-12-10)» 編集
過去の日記

2007-12-06 イメージコピー版イメージファイト

うまく動いてないようですが

cybertさんのブログから

IE仕様?をついた画像ファイルを使用したXSSというのがあります。なかなか決定的な対策がなく、私も困っています。画像の再コンバートとか、画像のファイルヘッダを確認するのも。コメントとかカラーパレットとかで、決定的なものがありません。

が、ちょっと作ってみたのが、

1.空の画像を作って

2.ユーザのアップロードしてきた画像を空の画像にコピーする

これだといけそうな気がしたので作っていました。

[PHPで画像XSSの一味変わった対策より引用]

えーっと、さっそく試してみましたが、意図通りに動いていないようです。パレットにJavaScriptを仕込んだ画像を食わせると、出力された画像にもJavaScriptが残っていました。

JavaScriptを埋め込んだ画像を作ってみました」で紹介した画像だとJavaScriptが消えるのですが、これはJavaScriptを仕込んだパレットが実際には利用されていない色だったからのようで、そのパレットの色も使うようにすると、JavaScriptがそのまま残りました。下の画像がテストに使ったものです*1

画像の説明

また、フルカラーのBMPの画像本体にJavaScriptを仕込んだ場合も、そのまま出力されました。この方式では、フルカラーBMPのイメージ本体に仕込まれたJavaScriptは、原理的に除去されないように思います。

画像の説明

以上、ご報告まで。がんばってください。

*1 実際には、はてブのはせがわさんの指摘のように、MS07-057を適用したIEの場合、JavaScriptが動くのはBMPのみですが

本日のツッコミ(全2件) [ツッコミを入れる]
はせがわ (2007-12-06 22:40)

徳丸さんはわかってらっしゃると思いますが、念のために整理してフォローしておきますと、MS07-054適用以前はBMP/PNGでこの手のXSSが可能でしたが、MS07-054の適用でPNGも大丈夫になり、BMPのみが危険となりました。とはいえ、GIF/JPEG/PNGであってもContent-Typeがファイル形式に合致していない場合はファイルの内容のsniffが行われ、HTMLと解釈されることはあり得ます。

徳丸浩 (2007-12-07 18:11)

はせがわさん、フォローありがとうございます。えーっと、MS07-054ではなくてMS07-057ですよね(MS07-054はMSN Messengerなどの脆弱性)。
Content-Typeに加えてマジックバイトのチェックも必要ですが、イメージをコピーする方式ですと、画像としての形式は整っているはずなので当然ながらマジックバイトも正しいものが入っているという前提ですよね。
ということで、MS07-057が適用されている場合、問題が残るのはBMP形式のみです。はてブの方には書きましたが、主要ブラウザがPNG形式に対応している現状ではBMPに対応しなければならない理由はほとんどなく、BMPには対応しないという考え方も現実解としてはあると思います。

本日のリンク元
その他のリンク元
検索

SQLインジェクション対策はおすみですか?
開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、
脆弱性発見後の適切な対策まで
トップ «前の日記(2007-12-05) 最新 次の日記(2007-12-10)» 編集