[PR]小規模ECサイトに最適なWAF、SiteGuard Lite

徳丸浩の日記


2007年07月24日 書評のお稽古

_ 書評 - ウェブアプリケーションセキュリティ

金床氏の話題の新作「ウェブアプリケーションセキュリティ」が届いたので、ざっと目を通した。まだあまり紹介などが出ていないようなので、早い者勝ちで書評してみようと思う。

 本を手にとって最初に思うことは、その大部さである。いまどき、箱入り、ハードカバーで494ページもあり、ずしりとした手ごたえを感じる。日常のリファレンスや満員電車のお供にするのであれば、もっと軽薄短小であって欲しいと思うところだが、本書の場合そうではない。その理由は後述する。
 まず、本書の想定読者はどのような人だろうか。ウェプアプリケーションセキュリティの初心者でないことは確かだ。本書は内容にムラが多い。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アプリケーションのセキュリティ完全対策―不正アクセスや情報漏洩を防ぐ」を購入せよといいたいところだが、あいにく時間の経過とともに内容が少し古くなってしまった。現時点で「一冊目」としての絶対のお勧めはない。どなたか書いていただけないものだろうか。

本日のツッコミ(全5件) [ツッコミを入れる]
_ sonodam (2007年07月25日 14:19)

言い出しっぺの法則(笑)>「一冊目」
改訂キボン>完全対策本

_ ikepyon (2007年07月25日 16:18)

攻撃手法の解説書って必要ないというわけじゃないんでしょうけど、セキュアなアプリの開発手法の具体的な解説書の方がいいんじゃないかと思う今日この頃です。

_ 金床 (2007年07月25日 21:48)

sonodamさんがいいこと言った!
…しかし改訂じゃなくてフルスクラッチでお願いします。

_ 徳丸浩 (2007年07月27日 13:01)

皆さん、ありがとうございます。本は書きたいのだけれど、今忙しくて・・・金床さんだって会社経営の傍ら14ヶ月(だっけ?)かけて書いたわけだから書けない理由にはなんないんだけど。

_ DOMO (2009年06月09日 23:58)

はじめまして。現在Webアプリケーションの勉強をしていまして、徳丸さんの「Webアプリケーションのセキュリティ完全対策―不正アクセスや情報漏洩を防ぐ」がおススメだと聞きました。それで本屋を何件も探したのですが見つからず、アマゾンはクレジットカードがいるし…で買えませんでした。よければ直接売っていただきたいです。

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


[PR]小規模ECサイトに最適なWAF、SiteGuard Lite

ockeghem(徳丸浩)の日記はこちら
HASHコンサルティング株式会社

最近の記事

最近のツッコミ

  1. DOMO (06-09)
  2. 徳丸浩 (07-27)
  3. 金床 (07-25)
Google