| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |
2007-12-06 イメージコピー版イメージファイト
●うまく動いてないようですが
IE仕様?をついた画像ファイルを使用したXSSというのがあります。なかなか決定的な対策がなく、私も困っています。画像の再コンバートとか、画像のファイルヘッダを確認するのも。コメントとかカラーパレットとかで、決定的なものがありません。
が、ちょっと作ってみたのが、
1.空の画像を作って
2.ユーザのアップロードしてきた画像を空の画像にコピーする
これだといけそうな気がしたので作っていました。
[PHPで画像XSSの一味変わった対策より引用]
えーっと、さっそく試してみましたが、意図通りに動いていないようです。パレットにJavaScriptを仕込んだ画像を食わせると、出力された画像にもJavaScriptが残っていました。
「JavaScriptを埋め込んだ画像を作ってみました」で紹介した画像だとJavaScriptが消えるのですが、これはJavaScriptを仕込んだパレットが実際には利用されていない色だったからのようで、そのパレットの色も使うようにすると、JavaScriptがそのまま残りました。下の画像がテストに使ったものです*1。
また、フルカラーのBMPの画像本体にJavaScriptを仕込んだ場合も、そのまま出力されました。この方式では、フルカラーBMPのイメージ本体に仕込まれたJavaScriptは、原理的に除去されないように思います。
以上、ご報告まで。がんばってください。
*1 実際には、はてブのはせがわさんの指摘のように、MS07-057を適用したIEの場合、JavaScriptが動くのはBMPのみですが
- http://d.hatena.ne.jp/cybert/20071206 ×14
- http://www.tokumaru.org/ ×7
- http://press.eek.jp/result/gif/gif ファイル ×6
- http://www.tokumaru.org/JavaScript/ ×6
- http://b.hatena.ne.jp/ockeghem/ ×6
- http://b.hatena.ne.jp/TAKESAKO/ ×5
- http://d.hatena.ne.jp/ockeghem/20071126/p1 ×5
- http://d.hatena.ne.jp/cybert/ ×4
- http://a.hatena.ne.jp/yamagata21/ ×3
- http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/... ×2
- http://b.hatena.ne.jp/Kanatoko/favorite ×2
- http://press.eek.jp/result/gif/ファイル形式 gif ×1
- http://www.tokumaru.org/techterm/ ×1
- http://www.tokumaru.org/JavaScript/index.htm ×1
- http://d.hatena.ne.jp/cybert/20060913 ×1
- http://d.hatena.ne.jp/ockeghem/20071126/p3 ×1
- http://d.hatena.ne.jp/teracc/20070715 ×1
- http://b.hatena.ne.jp/TAKESAKO/?of=20 ×1
- http://r.hatena.ne.jp/pero1/セキュリティ/ ×1
- http://b.hatena.ne.jp/ockeghem/20071206 ×1
- http://www.tokumaru.org/d/20071206.html ×1
- http://b.hatena.ne.jp/entry/http://www.hsbt.org/di... ×1
- http://d.hatena.ne.jp/ockeghem/20071021/1192986523... ×1
- http://b.hatena.ne.jp/entry/5973225 ×1
- http://b.hatena.ne.jp/nihen/favorite ×1
- http://d.hatena.ne.jp/ockeghem/20071126 ×1
- http://www.tokumaru.org/was/ ×1
- http://b.hatena.ne.jp/entry/http://www.tokumaru.or... ×1
- http://tinyurl.com/preview.php?num=2cp2qz ×1
- http://labs.cybozu.co.jp/blog/takesako/2007/08/lls... ×1
- http://d.hatena.ne.jp/cybert/20070628/1183019663 ×1
- http://d.hatena.ne.jp/ockeghem/about ×1
- http://tinyurl.com/preview.php?num=35kzy6 ×1
- http://b.hatena.ne.jp/TAKESAKO/イメージファイト/ ×1
- 画像XSS ×7 / キーワード不明 ×5 / イメージファイト クロスサイトスクリプティング ×3 / 入力値チェック PHP SQL ×3 / 画像Xss ×3 / 徳丸 画像XSS ×3 / BMP XSS ×2 / JavaScript ループ ×2 / イメージファイト ×2 / JAVA Script 画像 ×2 / イメージファイト bmp ×2 / 画像 xss php ×1 / break ×1 / クロスサイトスクリプティング 実装方法 サニ ×1 / bmpにjavascript ×1 / JavaScript 画像 ファイルヘッダ ×1 / XSS エスケープ回避 ×1 / c ブロックを抜ける ×1 / javascript bmp ファイルヘッダ ×1 / BMP JavaScript ×1 / イメージコピー ×1 / 画像 xss 徳丸 ×1 / sql update 変数 ×1 / IE の画像コピー ×1 / 画像版 ×1 / IE イメージファイト ×1 / ruby 画像 コピー ×1 / site:*/d/ tdiary ×1 / 画像 xss ×1 / イメージファイト2 ×1 / oracle table カラム名 文字数 制限 ×1 / イメージファイト 徳丸 ×1 / 徳丸 画像 ×1 / イメージファイト xss ブラウザ ×1 / web イメージコピー ×1 / php 画像 xss ×1 / JavaScript BMP ×1 / SPAM www.seozone.jp ×1 / JPEG コメント マジックバイト ×1 / 画像 XSS コメント ×1 / javascript switch ×1 / same origin policy ×1 / 数値 暗黙 変換 文字列 sql ×1 / GIF/JPEG/PNG 形式のみです ×1 / ie xss 画像 ×1 / php RFI 対策 ×1 / javaScript BMP ×1 / RFI攻撃 ×1 / bmp javascript ×1 / Javascript 画像 ×1 / イメージファイト ウェブ ×1 / 徳丸浩 ×1 / SQL 変数 クォート 数値型 ×1 / XSSテスト ×1 / 画像 クロスサイト PHP ×1 / php 文字 エスケープ 入力 セキュア ×1
| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |
徳丸さんはわかってらっしゃると思いますが、念のために整理してフォローしておきますと、MS07-054適用以前はBMP/PNGでこの手のXSSが可能でしたが、MS07-054の適用でPNGも大丈夫になり、BMPのみが危険となりました。とはいえ、GIF/JPEG/PNGであってもContent-Typeがファイル形式に合致していない場合はファイルの内容のsniffが行われ、HTMLと解釈されることはあり得ます。
はせがわさん、フォローありがとうございます。えーっと、MS07-054ではなくてMS07-057ですよね(MS07-054はMSN Messengerなどの脆弱性)。
Content-Typeに加えてマジックバイトのチェックも必要ですが、イメージをコピーする方式ですと、画像としての形式は整っているはずなので当然ながらマジックバイトも正しいものが入っているという前提ですよね。
ということで、MS07-057が適用されている場合、問題が残るのはBMP形式のみです。はてブの方には書きましたが、主要ブラウザがPNG形式に対応している現状ではBMPに対応しなければならない理由はほとんどなく、BMPには対応しないという考え方も現実解としてはあると思います。