「体系的に学ぶ安全な 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. 実環境では再現が難しいであろう脆弱性がある
XSS、CSRF、SQL インジェクションなどの、頻繁に報告される脆弱性はもちろん紹介されますが、eval インジェクション(JS 以外)、ファイルインクルード攻撃などは、現在の主な実装方法ではほとんど起こり得なさそうに感じられました。
動作環境も PHP を CGI の使い方をしていることから再現できるのであって、あまりにも環境が古い気がします。
ここらへんは、過去にそういう事例があったという理解、そういう現場になったときのこと、 WordPress を触るとき、思い出せればいいかと思って流し読みしてしまいました
2022/01/27 追記。
以下の記事を踏まえて、考え方が変わりました。WordPress だけでなく、EC-CUBE という PHP で動く OSS を使用していたことによる被害が増えているとのことです。 2022 年 1 月 27 日という徳丸本第 2 版が出版されてから 4 年経過してからのことでした。 被害が起こってからでは遅いので、脆弱性が起きやすいパターンは新旧問わず把握しておくべきだと考えました。
カード被害額、最悪更新 (略) ジーアールは、誰でも無料で利用・改変できる EC サイト構築システム「EC-CUBE」の旧バージョンを利用していた。
2. 動作環境が VirtualBox で用意されており、M1Mac は VirtualBox が動作しない
VirtualBox 自体は簡単に良いできることから問題ないです。しかし、今後 M1Mac に乗り換えたとき際には動作しなくなってしまいます。
仮想環境は Docker が主流なので、できれば早くだしてほしいです。
2022/12/06 追記。
徳丸先生より、コメントをいただきました。 M1/M2Mac 向けに Docker 対応されました。 今後は、Docker 版を利用しましょう。
安全なWebアプリケーションの作り方第2版の実習環境を M1/M2 Mac 向けに Docker対応いたしました。ARM64だけでなくAMD64にも対応しています。 / “Docker版実習環境の使い方 - 安全なWebアプリケーションの作り方 第2版 サポートサイト” https://t.co/QYxR3PphIA
— 徳丸 浩 (@ockeghem) 2022年12月4日
まとめ
体系的にセキュリティについて学ぶことができるだけでなく、Web の基礎知識や管理者側の観点も学ぶことができる、神本でした。 この本の知識を持たずして、Web アプリの開発を作っていた自分が悲しくなるレベルです。 非常に分厚いので、読み始めるのに躊躇しますが、図と文章による非常にわかりやすい解説をしてくれるので、想定よりも読み進めることは容易です。
2022/12/06 追記。
M1/M2 Mac 向けに Docker 対応もされているので、M1 Mac ユーザーも安心して本書を購入しましょう。 以下に貼られていたリンクは、Docker 対応される前のリンクだったので、削除しました
気になった点においても、徳丸先生が対策のツイートや動画を出してくれているので、とりあえずは安心かつ期待です。
2022/12/06 追記終わり。
この本を読んで次のアクションは、個人開発で活かす、ウェブセキュリティ基礎試験を受ける、他のセキュリティ本を読むを実行しようと考えています。 個人開発は普段から意識することとして、ウェブセキュリティ基礎試験はせっかく頑張ったので絶対に受かりたいです。
他のセキュリティ本は、「Web ブラウザセキュリティ」「セキュア・バイ・デザイン」を考えており、復習&挑戦をしていきます。