msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版(徳丸本)」感想

「体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版」[徳丸浩 (著) , 2018]を読みました(7章「脆弱性診断入門」以外)。

著名なセキュリティ関連の書籍であること、セキュリティに興味があったことから読むことにしました。

感想

本書の構成は、9つの章にわかれており、脆弱性の定義や、Web ブラウザ間のリソース共有、脆弱性とその対策、セキュリティを向上させる機能、セキュリティ診断などが体系的に解説されています。 VirtualBox で動作する実習環境が用意されており、手を動かしながら、学ぶことができます。 言語は PHP を用いて解説されていますが、他の言語で簡単な Web アプリを作成した知識あれば、PHP の知識がなくても問題なく読むことができる内容と解説になっております。 第1版と第2版がありますが、動作環境の観点や、モダンな脆弱性の観点から第2版を買うことは必須です。

実際に手を動かしながら読んだので、3カ月ぐらいかかりました。 ただ、それぐらいに時間をかけても十分なリターンがある書籍だと思いました。

よかった点と気になった点についてまとめていきます。

よかった点

よかった点は3点あります。

1. 脆弱性を体系的に網羅的に学ぶことができる

タイトルの「体系的に学ぶ」に偽りはなく、本書の半分を使って世の中で紹介される脆弱性を学ぶことができます。 普段の勉強のなかで、書籍や動画で「〜の脆弱性があるので対策をします」とあっても、実際に攻撃することは稀だと思います。 本書は、教科書でしか聞いたことがない知識を学ぶことができ流という点で非常にすぐれています。

2. Web の基本的な知識の解説からはじまる

4章の脆弱性の解説の前に3章で Web の基礎知識(HTTP リクエスト、リソース共有など)について解説をしてくれます。 Web アプリの勉強をするときに、当たり前のように使っている箇所なのに、今まで学んだことがなく、目から鱗でした。 CORS をなんとなくの設定で許可したり、実はプリフライトリクエストが飛んでいるのを知らなかったりと、Web アプリを作っていたのに理解していなかったことを痛感しました。 また、6章で解説される文字コードの歴史なども知らなかった(文字コード、文字エンコーディングの違いを理解していなかった)ので、そのような点においても知識の整理に役に立ちました。

3. セキュリティ対策の観点がソースコードに止まらない

「Web アプリケーションの作り方」とありますが、それ以外に「Web サーバーへの攻撃経路」、「なりすまし」、「盗聴改ざん」、「認証・認可」、「ログ」などと管理者側からの視点も書いてあります。 とりあえず動く以上の観点を書籍から学ぶことができるの、個人開発だけでは知り得ない知識を得ることができます。

気になった点

気になった点は2点あります。

1. 実環境では再現が難しいであろう脆弱性がある

XSSCSRFSQL インジェクションなどの、頻繁に報告される脆弱性はもちろん紹介されますが、eval インジェクション(JS 以外)、ファイルインクルード攻撃などは、現在の主な実装方法ではほとんど起こり得なさそうに感じられました。 動作環境も PHPCGI の使い方をしていることから再現できるのであって、あまりにも環境が古い気がします。 ここらへんは、過去にそういう事例があったという理解、そういう現場になったときのこと、 WordPress を触るとき、思い出せればいいかと思って流し読みしてしまいました

2022/01/27 追記

以下の記事を踏まえて、考え方が変わりました。WordPress だけでなく、EC-CUBE という PHP で動く OSS を使用していたことによる被害が増えているとのことです。 2022 年 1 月 27 日という徳丸本第 2 版が出版されてから 4 年経過してからのことでした。 被害が起こってからでは遅いので、脆弱性が起きやすいパターンは新旧問わず把握しておくべきだと考えました。

カード被害額、最悪更新 (略) ジーアールは、誰でも無料で利用・改変できる EC サイト構築システム「EC-CUBE」の旧バージョンを利用していた。

www.nikkei.com

2. 動作環境が VirtualBox で用意されており、M1Mac は VirtualBox が動作しない

VirtualBox 自体は簡単に良いできることから問題ないのですが、今後 M1Mac に乗り換えたときに動作しなくなってしまいます。 仮想環境は Docker が主流なので、できれば早くだしてほしいです。

まとめ

体系的にセキュリティについて学ぶことができるだけでなく、Web の基礎知識や管理者側の観点も学ぶことができる、神本でした。 この本の知識を持たずして、Web アプリの開発を作っていた自分が悲しくなるレベルです。 非常に分厚いので、読み始めるのに躊躇しますが、図と文章による非常にわかりやすい解説をしてくれるので、想定上に読み進めることは容易です。

気になった点においても、徳丸先生が対策のツイートや動画を出してくれているので、とりあえずは安心かつ期待です。

www.youtube.com

この本を読んで次のアクションは、個人開発で活かす、ウェブセキュリティ基礎試験を受ける、他のセキュリティ本を読むを実行しようと思います。 個人開発は普段から意識することとして、ウェブセキュリティ基礎試験はせっかく頑張ったので絶対に受かりたいと思います。

他のセキュリティ本は、「Web ブラウザセキュリティ」、「セキュア・バイ・デザイン」を考えており、復習&挑戦をしていきます。