『徳丸本』第2版 発売記念インタビュー(後編)
- テクノロジー
トライベック・ストラテジーのパートナーである、EGセキュアソリューションズの代表徳丸 浩氏の『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践』が2018年6月に発行されました。
本書は2011年3月の初版発行から7年ぶりの改訂版。通称『徳丸本』とも呼ばれ、Webアプリケーション開発者必携のバイブルとされる本書の改訂は、そのまま7年間のWebセキュリティ対策の歴史を反映したものといえます。
後編の今回は、著者である徳丸 浩氏、レビュアとしても参加された同社セキュリティエンジニア 岡本 早和子氏に本書の詳細な改訂内容、執筆にあたっての裏話などを伺いました(聞き手:中島 秀明)。
第2版で増えた内容の秘密
- まずは第2版で追加された内容についてお聞かせください。企画段階では策定されていなかったOWASP TOP10 2017ですが、「1.6 セキュリティガイドラインとの対応」には「安全なウェブサイトの作り方」と並んで本書との対応表が掲載されています。
- 私が元々IPAで非常勤研究員として「安全なウェブサイトの作り方」を担当していたということもあって、それを詳しく書く、というのが初版の目的のひとつでもありました。今はそれに加えてOWASP JAPAN CHAPTER AdvisoryBoardの一員ですので、OWASP TOP10の方も意識した内容にしています。現実問題としてOWASP TOP10が日本でも普及浸透してきて、いろんな実務とか、脆弱性診断の基準として取り扱いされるようになってきています。
- IPA 独立行政法人 情報処理推進機構(https://www.ipa.go.jp)。日本におけるIT国家戦略を技術面、人材面から支えるために設立された
- 安全なウェブサイトの作り方 IPAが作成した、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料(https://www.ipa.go.jp/security/vuln/websecurity.html)
- 脆弱性のガイドラインとして、基準となるものの存在が認知されるようになってきたということですね。
- なので、自分の好みとかは置いといて(笑)、取り上げないとまずいだろう、と。正直いるんかな、と思いつつも外すわけにはいかないものと、その一方でぜひ書きたい、と思うものもありました。きっと読んだ人には「ここは気合入っているなあ」とわかってしまうでしょうね。
- OWASP TOP10 2017で追加されたリスクとして特徴的だったものにはXXEとデシリアライゼーションがあります。
- XXE XML外部実態参照(XML eXternal Entry)。XMLから外部ファイルの内容を参照する機能
- デシリアライゼーション オブジェクト等を保存・伝送するために変換したバイト列から、元のオブジェクトを生成すること
- これ、PHPだと仮にあっても攻撃が難しくて、滅多に起こらないだろうと思っていたんです。でも、実はJavaだとわりと起こる話なんですね。そういう意味では載せる口実ができたしめしめ、と。気合が入っていただけあって、ちょっとマニアックな感じになってますね。
- どちらのことかは読んでからのお楽しみですね。
- PDF FormCalcは指摘を受けて追加しました。これは別の意味で議論の分かれるところでして、「これはバグじゃないよね、Adobeが悪いだけだよね」ということではあるんですけど、まあみんな使ってるし実際、問題もありますので。
- 細かいところではOSコマンド・インジェクションの対策として新しく「OSコマンドに渡すパラメータをシェルの環境変数経由で渡す」というものが追加されています。
- そもそもOSコマンド・インジェクション対策として4つ書いてましたが、どれも気に入らないんですよね。PHPの場合、例外はあるもののシェル経由でしかOSコマンドを叩けない。一番汎用的に使える方法はエスケープですけど、間違えやすいので気に入らないと思っていたところ、さとうふみやすさんが記事で指摘していたのでぜひこれを広めたいという思いがあって。
- さとうふみやす氏(@satoh_fumiyasu) オープンソース・ソリューション・テクノロジ Expert Engineer
- これはかなりいいですか?
- いいですね。エスケープいらない。
- それから、初版にもあった項目ではありますが、クリックジャッキングとDOM Based XSSは扱いが大きくなりましたね。
- もともと書きたかったということと、「安全なウェブサイトの作り方 第7版」には入っているので大きく取り上げました。DOM Based XSSについては講演やブログで取り上げる材料が増えたことと、さまざまな手法が整理されてきたことが大きいですね。
自分たちで脆弱性診断を実施するというニーズ
- 今回大きく紙面を割いている新しい章に「脆弱性診断入門」があります。脆弱性診断実習と報告書サンプルが入っていて、初版の「9.3.7 ウェブ健康診断仕様の紹介」から比べるとずいぶん実践的という印象です。
- 初版を執筆していた2010年頃は脆弱性診断をやる人は少なくて、脆弱性診断エンジニアは読者として想定していなかったんです。でも、その後ものすごく増えて、現実問題としても読まれているようなので、第2版ではそういったエンジニアの視点も意識しています。
- 脆弱性診断エンジニアが増えたということは、セキュリティに長じたエンジニアが増えたということですか。
- いやあ、レベルはピンキリですね。上の人になるとほんとにすごいんですけど、そういう人は現場の脆弱性診断はしていないケースが多くて、実際の診断員の中にはセキュリティのことをよくわかっていない人もいるんじゃないかと思います。実は私が顧問契約をしているお客様が他社で脆弱性診断を受けて、その報告会に同席することがあるんですが、それはそれは嘆かわしい状況になることがあります。
- 向こうもまさか徳丸さんが出てくるなんて思ってもいないでしょう(笑)。
- たぶん、私のことは知らないんでしょう。各社それぞれ診断のやり方があって、例えばシングルクオートを入れてインジェクションをチェック、それを延々とする会社もあれば、ツールで一括で、というところもある。そうするとなにを確認しているのか、自分自身よくわからずにやっているんじゃないかな、と思うような報告になっていたりします。仕事は仕事としてやるにしても、中身を分かってないと面白くないですよ。第2版はそういう方々へのメッセージでもあります。
- その一方で、開発会社自身が自分たちの作ったものの診断をやりたい、という声は増えてきています。今の開発の速度やコストを考えると、自分自身でできる範囲で診断をやった上で、専門家に診断を依頼する、というように変わってきているようです。
- 「9.3.10 アジャイル型開発プロセスへの適用」はそれを反映しての話ですか?
- アジャイルの話は元々なかったんですが、レビュアの太田 良典さんからの強い要望がありまして。現場的にはアジャイルだとセキュリティ施策はやりにくい、ではアジャイルのスピード感をもって脆弱性対応をするにはどうすればいいか、ということを考えて生まれたものなんです。謝辞にもあるとおり、太田さんと弁護士ドットコムのエンジニアの方々とディスカッションした内容なども盛り込まれています。
- 太田 良典氏(@bakera) 弁護士ドットコムのアクセシビリティエンジニア。水無月ばけらの筆名でも知られる
豪華なレビュア―陣の秘密
- 太田 良典さんの他にも名だたる方々がレビューをされているようですが、徳丸さんから打診されたんですか?
- 初版は初心者の声も反映したい、ということで公募しましたが、今回は私からお声掛けさせていただきました。すでに本の骨格ができているので、初心者の視点からのレビューはなくてもいいだろう、と。むしろ、私よりJavaScriptに詳しい人はいっぱいいるので、そういう人を入れたかったんですね。はせがわようすけさんですとか。幸い面識があったので快く請けていただけました。
- はせがわようすけ氏(@hasegawayosuke) SaaS型WAF、Scutumで知られるセキュアスカイ・テクノロジーCTO
- キヌガワマサトさんは入ってないんですね。
- キヌガワマサト氏(@kinugawamasato) 日本人と思われるバグハンター
- 迷ったんですけどね、お願いしたらやってくれたんじゃないかとは思うんですけど……。
- キヌガワさんはp.445の内容に指摘されていますが、これはどういう意味なんでしょうか。
- キヌガワさんのは難しくてよくわかってないんですけど……むしろ私の方からキヌガワさん本人かはせがわさんに教えてほしいですね。
なぜなくなった? 第2版で消えた内容の秘密
- 文字エンコーディングについては「4.2 入力処理とセキュリティ」「6.3 文字エンコーディング」の2か所に出てくる構成は初版と変わりませんが、コラムの「文字エンコーディングの自動変換とセキュリティ」は削除されています。
- あれはぶっちゃけ――(中略)――そういうのはもう卒業しようと(笑)
- (笑)
- まあ、文字エンコーディングの扱いっていうのは非常に微妙で、初版の頃と比べると重要性が減っているんです。
- セキュリティ上の重要性が減っているということですか?
- 初版のころはまだ携帯があって、SHIFT_JISが相当残っていました。しかし、この7年間でUnicode――特にUTF-8が非常に普及しました。全部Unicodeで通せばあまり起きない問題なんですよ。結局、レビュアの西村さんが非常に気に入ってくださっていたということで残すことにしました。
- 西村 宗晃氏 リクルートテクノロジーズ。バグハンターとしても知られる
- 初版の「7 携帯電話向けWebアプリケーションの脆弱性対策」も丸々なくなっていますね。時代の流れということで不思議はないですが。
- 他にも時代の変化で重要性が下がったものはあります。XSTなんかそうですね。初版でも「特殊なブラウザを使っている利用者でなければ(問題ない)」と断っていましたが、7年経てばさらにブラウザの対策が進んでおり、もはや危険性はほぼありません。しかし、杓子定規な脆弱性診断では脆弱性だと判断されてしまう場合があるので、そういった診断に対するメッセージでもあります。
- XST クロスサイト・トレーシング。HTTPのTRACEメソッドを送信してCookieやBasic認証のID/パスワードを窃取する攻撃。TRACEメソッドを無効化して対応する
- 初版の「4.3.2 クロスサイト・スクリプティング」にあった「参考:PerlによるUnicodeエスケープ関数」も削られてます。
- Unicodeエスケープ自体を削りました。もともとはJavaScriptを動的生成する際のXSS対策のひとつとしてJavaScriptでエスケープ――Unicodeエスケープでunicode形式(\uXXXX)にするためのスクリプトを紹介していました。しかし、複雑で技巧的なスクリプトはバグを生みやすいため、第2版では奥一穂さんが提唱されていた、インラインJSONPによる方法を紹介しました。
- 奥 一穂氏(@kazuho) HTTP/2サーバ「H2O」他、多くのオープンソースソフトウェアの開発者
- 第1版を読んだことがある人も、第2版で知識や理解をアップデートするといいですね。本日はどうもありがとうございました。
関連コラム
この記事に関するご相談やご質問など、お気軽にお問い合わせください。