『徳丸本』第2版 発売記念インタビュー(前編)
- テクノロジー
トライベック・ストラテジーのパートナーである、EGセキュアソリューションズの代表徳丸 浩氏の『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践』が2018年6月に発売されました。
本書は2011年3月の初版発行から7年ぶりの改訂版。通称『徳丸本』とも呼ばれ、Webアプリケーション開発者必携のバイブルとされる本書の改訂は、そのまま7年間のWebセキュリティ対策の歴史を反映したものといえます。
著者である徳丸 浩氏、レビュアとしても参加された同社セキュリティエンジニア 岡本 早和子氏に本書の概説と実践講座の内容について伺いました(聞き手:中島 秀明)。
HTML5よりもJavaScriptとWeb APIにフォーカスした理由とは
- 7年ぶりの改訂ですが、内容を拝見しますと新しく追加された章、扱いが大きくなった項目が見られる反面、削除された項目などもあります。
- マーケティング的には「今回の改訂はHTML5対応です」と言いたいところなんですが、実際にはそうはならなかったですね。
- それはどうしてでしょうか。
- そういったHTML5に特化したものを「安全なWebアプリケーションの作り方」という枠組みで私が書くのが最適かというと、そうではない。この本では今の状況を反映した、もっと基礎的なところを書かなければならないと思ったんです。
- 具体的にはどういったところでしょうか。
- JavaScript(4.17 JavaScriptの問題)、それと相対するAPIの話(4.16 Web API実装における脆弱性)ですね。ここをしっかりと書かなければいけないなと思いました。
- その2つが現在のWebアプリケーションの状況の中で重要性が高まってきている、ということでしょうか。
- はい。去年の夏くらいから出版社と第2版の企画の話をしていたのですが、その時にはまだOWASP TOP10 2017は出ておらず、参考にすることはできませんでした。ですが、Webの作りとして処理がどんどんフロント側へ移ってきており、JavaScriptがより重視されるようになってきました。それに相対する形でサーバ側の方ではAPIが増えてきています。そのあたりの記事は見かけることはあっても、まとまった書籍としては見かけませんので、ここで書くべきだろうと。3章にCORSを入れているのはそういった背景からです。
- OWASP TOP10 ウェブアプリケーションのセキュリティ向上を目的とした国際的なコミュニティOWASP(The Open Web Application Security Project)が3年ごとに発表しているウェブアプリケーションの代表的なセキュリティリスク
- CORS Cross-Origin Resource Sharing。サイトを越えてデータをやり取りするための仕様。JavaScriptの活用が進んだことでニーズが高まった
著者による「徳丸本 第2版の歩き方」
- 第2版は667ページと、初版から200ページ近くも増ページとなっています。このボリュームには圧倒されてしまいそうですが、お勧めの読み方はありますか。
- まず全体をざっと流してほしいですね。1章、2章はおまけみたいなものなのでまず3章から。ここは基礎になりますので比較的しっかり読んでもらいたいです。「3.1 HTTPとセッション管理」「3.2 受動的攻撃と同一オリジンポリシー」はあまり変わっていないので、初版を読んだ人はさらっとで構いません。「3.3 CORS」は今回新たに追加されたものなのでしっかり読んでください。
- また、読む際にはぜひ、サンプルを動かして試してもらいたいというのが私の気持ちです。記事自体はWebサイトにもいっぱいあるんですが、試せないことが多いですから。CORSのヘッダを足してないとどうなるか、足せばどうなるか、ということをブラウザを動かして実際に試してほしいですね。
- 4章は360ページくらいありますね。
- 最初は各節のアタマの1ページだけ読むくらいでもいいです。辞書的に使ってもらえればいいので、まずはどこになにが書いてあるかを把握する程度でいいと思います。例えば、メール送信をしないアプリケーションであればメールヘッダインジェクションは気にしなくていいですし、構造データの読み込みも使ってなければ関係ありません。必要になったときに「このあたりに書いてあったはず」と思い出してもらえればいいです。もちろん、読み物として読みたい方は止めませんけど(笑)。
- ただ、第2版で追加された「4.16 Web API実装における脆弱性」「4.17 JavaScriptの問題」はしっかり読んでいただけるとありがたいというか、よいのではないかと思います。
- 知識を得るためにしっかり読むところと、必要になったときに読むところがあるということですね。弊社でもリファレンス的に使うことが多いです。
- そして「5 代表的なセキュリティ機能」は読み物的に読んでいただく章で、「6 文字コードとセキュリティ」はぶっちゃけ興味がある人だけ読めばいいかもしれません。
徳丸本 第2版出版記念ハンズオンセミナー
- 今回、第2版の出版を記念して「徳丸本 実践講座」を開催されるとのことですが、どのような人が参加するとよいのでしょうか。
- 企業の開発部隊や企業の中でセキュリティを担当している方です。まあセキュリティ診断を生業にしているような同業者でもお断り、とはしてないんですが。
- 同業者ウェルカムですか?
- いやいやいや(笑)、来たら悩んじゃいますね。
- どういった内容になりますか。
- 「3 Webセキュリティの基礎」「4 Webアプリケーションの機能別に見るセキュリティバグ」「5 代表的なセキュリティ機能」「7 脆弱性診断入門」はしっかりやります。4章はボリュームが大きいので全部はやれないのですが、入門から最新の内容までをバランスよく取り上げますので、基礎を学びたい方から第2版ならではの学びを得たい方まで広く満足していただけるものになっています。
- 特に「7 脆弱性診断入門」はお勧めです。徳丸はWebセキュリティの第一人者であるとともに、脆弱性診断のプロフェッショナルでもあります。そういった最前線の技術者が、実務をベースにしたお話をする機会はあまりないと思いますので。
- 実務をベースにする、というのは具体的にどういったところに現れるのでしょうか。
- 例えばp.587(7.7 OWASP ZAPによる手動脆弱性診断)ではクロスサイトスクリプティングの脆弱性を使ってJavaScriptを送り込むことができます。しかし、実際に送り込まれたJavaScriptはエラーとなって実行できません。こういうのは現場でも割とある話なんですが、これをどう扱うかは実は深い考察が必要です。絶対に動かないのであれば危険はありませんが、本当に絶対と言えるのか。開発者であればそこを突っ込んで調査するよりも安全側に倒してJavaScriptを送り込まれないように対処すべきですし、セキュリティの専門家であれば頑張って送り込んだJavaScriptを動かしてみせるべきです。
- 脆弱性診断のスタートガイド的なものだからといって表面的な事象だけをとらえるのではなく、そういった本質をきちんと押さえるべき、ということですね。
- はい。意外に深いところまで触れられるセミナーになると思いますよ。
- それから徳丸が力を込めて「理想の報告書」を作成しておりますので、発注する側にも「診断の良しあしはどこで見ればいいのか」の参考にしていただけると思います。
- セミナー受講者に想定するスキルとしてはどのあたりになりますか。
- 企業の品質部門の方などですとコードは書かないと思いますので、PHPが読めるといいな、くらいですかね。今回JavaScriptも入ってきますし、両方とも読み書きできる、というレベルを求めるようなセミナーだとちょっとハードルが高いのかな、と思っています。SQLもSELECT、WHEREなどの基本的なところを押さえていればいいです。
- 今回初めてセキュリティに触れる、という方でも大丈夫ですか。
- 想定内です。HTTPがわかっていない方が多いと思うので、教える側にとってはそこがチャレンジだと思ってます。「3.1 HTTPとセッション管理」の簡単な時計を動かすところからやることになるでしょうね。
- なんとなく、でもいいので、サーバ、クライアント、ブラウザがあってそこからこういう通信が発生して、こういうのが返ってくる、という概要を事前に知っているとスムーズに受講できるんじゃないでしょうか。こういったWebアプリケーションがブラウザで完結しているのではない、ということがイメージできれば入っていけると思います。
- 席はまだありますか?
- 実はすでに締め切っているんですが、この記事を読まれた方には追加枠をご用意します。若干名になってしまいますが、ぜひお申し込みください。
- ありがとうございます。
講座の詳細につきましてはEGセキュアソリューションズの以下のページをご確認ください。
『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践』実践講座
後編ではより詳細な改訂内容、執筆にあたっての裏話などを紹介します。
関連コラム
この記事に関するご相談やご質問など、お気軽にお問い合わせください。