| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |
2007-07-16 再開
● 再開しました
しばらくSPAM対策のため日記を閉鎖しておりました。 本日再開しますのでよろしくお願いいたします (_ _) 少しだけSPAM対策したけど、どーかなぁ
2007-07-17 XSSテスト画像
●JavaScriptを埋め込んだ画像を作ってみました
寺田さんの日記に触発されて、JavaScriptを埋め込んだPNG画像を作ってみました。
注意:この画像にはJavaScriptが埋め込んであります。
ここをクリックすると、JavaScriptが発動し、あなたのクライアント上でCookieの値を表示します(IE限定です)
追記
ImageMagic の convertコマンドでPNG→GIF→PNGと変換しても、JavaScriptは削除されませんでした。これは、T.Teradaさんの解説の追試に過ぎませんが、一応ご報告まで。
追記(2007/10/10)
MS07-057のパッチを適用したところ、PNG画像は正しく画像として認識されるようになり、JavaScriptも起動しなくなることを確認しました。手元のIE7にて確認しております。
2007-07-24 書評のお稽古
● 書評 - ウェブアプリケーションセキュリティ
金床氏の話題の新作「ウェブアプリケーションセキュリティ」が届いたので、ざっと目を通した。まだあまり紹介などが出ていないようなので、早い者勝ちで書評してみようと思う。
まず、本書の想定読者はどのような人だろうか。ウェプアプリケーションセキュリティの初心者でないことは確かだ。本書は内容にムラが多い。XSSや、CSRF、SQLインジェクション、セッション管理などについてはやたら詳しい代わりに、ディレクトリトラバーサル、コマンドインジェクション、ヘッダインジェクションについては「一応書いておかないとしょうがないな」と言わんばかりの薄っぺらさだ。この手の解説書の定番となってる強制ブラウジング、ディレクトリリスティングや、ファイルのダウンロードに伴う権限管理の問題などに至っては影も形もない。
ディレクトリリスティングなどを説明しないのは、おそらくこれらがアプリケーションの問題ではなく、主にWebサーバーの設定の問題(アプリケーションではなく)だからであろう。また、アクセス権限管理は狭義のWebアプリケーション脆弱性パターンには属さず、機能要件として取り扱うべきものであるからだろう。そう説明できる。
しかし、それにしてはSSLのMITM(Man In The Middle)攻撃については1章設けて説明している。これは通信の問題であって、アプリケーションの問題ではない。一見すると一貫性がないように見える。
しかしながら実は、このようなムラや矛盾こそが本書の魅力の根源となっているのだ。要するに、筆者は書きたいことを書きたいように書いたのだ。筆者が力瘤を入れて書いた章は(世の中の基準ではなく)筆者が重要だと思っている内容であるし、筆者が書かなかった内容は(世の中では重要とされていても)筆者には興味がない内容であるのだろう。
従って、本書はウェブアプリケーションセキュリティの網羅的な解説書ではない。
上級者を目指す中級者にとっては、本書はちょうど良い手引きになるだろう。本書にはほとんど図表がないが、上級者たるもの「絵がない」くらいでめげてはいけない。図がない代わりに、文章は平明であるし、画面キャプチャやプログラムリストは適切に挿入されている。内容の高度さに比べて理解は容易である。
上級者にとっては、二つの使い道がある。一つは、これまでネット上などで断片的に存在していた「高度な内容」をまとめ、読みやすい解説としたことである。そして、こちらの方が恐らく大切なのだろうが、金床節をたっぷりと味わうことである。典型的には、「2章データ処理の原則と指針」、「4章CSRF」、「6章SQLインジェクション」、「8章Guardian@JUMPERS.NET(筆者が開発したWAF)」、「16章DNSを使った攻撃」などである。
WAFだと?そう、本書の特徴の一つがWAFに対する解説である。オープンソースのWAF開発者ならではの視点で、WAFの可能性と限界についてたっぷり解説してくれる。その視点は新鮮でかつ誠実である。そのような態度は、以下に引用するような部分で顕著である。
WAFを使用しブラックリスト方式のシグネチャマッチングによってXSS対策を行う場合、攻撃を完全に防ぐことは不可能である。【中略】望ましい対策として、パラメータごとにホワイトリスト式のチェックを行う方法が考えられるが、残念ながら多くのウェブアプリケーションではホワイトリストをきちんと定義することが難しい【中略】従って、WAFを使ってXSS攻撃を完璧に防ぐことは期待できない(P92〜P94)。
SQLインジェクションについても、WAFによる完全な対策はできないと説明する。 一方、CSRFについてはどうか。
クロスサイトスクリプティングやSQLインジェクションと異なり、CSRFはWAFで確実な対策を行うことが可能だ。ここではWAF(Guardian@JUMPERS.NET)を用いたCSRF対策について具体的に説明する(P119)。
読者は、WAFを導入するとCSRF対策になるのだなと理解するであろう。
しかし、これは正確な理解ではない。正確には、CSRF対策をWAFによって行うことが技術的に可能であること、Guardian@JUMPERS.NETではそれを実現していること、の二点だ。すべてのWAFがCSRF対策を確実に行えるわけではない。金床氏の文章は前述のように読みやすいのだが、一部に誤解を与えかねないような表現が散見される。
引用した部分において誤解が生じた理由は明らかだ。この部分に至って、金床氏はWAFの開発者の視点で書いている。一般読者はWAFの利用者として読むであろう。そのギャップが誤解の元になるのだ。読者は、金床氏が今どの立場で解説しているかを意識するならば、誤解の余地はかなり減少するだろう。なんと言っても、元々は読みやすい文章なのだから。
なお、そろそろ本書の対策方針については一言いっておかなければならない。これは、世の中で言われているガイドラインとは異なっている。「入力時に型やサイズチェック、出力時にエスケープ」という世の中で普及したガイドラインを「原則ではない」と言い切る。実は仔細に読んで行くと、そう過激な主張とも言えない場合もあるのだが、それは読者の楽しみにとっておくことにしよう。
繰り返すが、本書は初心者向けの解説では決してなく、上級者が自身の楽しみに読むのが正しいと思う。であれば、箱入りであるとかハードカバーであることは決してデメリットではない。楽しい読み物として末永く楽しむべき本には、それにふさわしい体裁があるというものである。
さらに言えば、本書は「二冊目」として購入すべき本である。では、一冊目としてはどれを購入すればよいか。もちろん、評者の本「Webアプリケーションのセキュリティ完全対策―不正アクセスや情報漏洩を防ぐ」を購入せよといいたいところだが、あいにく時間の経過とともに内容が少し古くなってしまった。現時点で「一冊目」としての絶対のお勧めはない。どなたか書いていただけないものだろうか。
| SQLインジェクション対策はおすみですか? 開発開始時点からのコンサルティングから、公開済みWebサイトの脆弱性検査、 脆弱性発見後の適切な対策まで |
★ はせがわ [GIF/JPEGでもこのようなXSSする画像はありますでしょうか?]
★ 徳丸浩 [はせがわさんのブックマークを見て、公開をすることにしました:-)なんだ、もう公開されているんだ、って。 GIFは試し..]
★ はせがわ [ありがとうございます。そうですね、2年前とは状況が変わってますね。また時間のあるときにいろいろ書いてみます。]