対象読者
自分たちが作るサービスは自分たちが守る!けどどうすれば良いかよくわからない!というチーム。のほか、
- セキュリティはなんとなく重要だと思ってるけど何すればいいかわからない人
- DevSecOpsの実現を目指していてどこから手を付けようかなーとか思ってる人
- リスクアセスメントや脅威モデリングをやろうとしたけど難しすぎて挫折した人
ざっくり内容
セキュリティ対策を下記4つのステップで分析し、情報システムのセキュリティを考えるための基本を習得する。
- 守るべきモノ(アセット)を特定する
- 守るべきモノを脅かす事象(脅威)を探す
- 弱点(脆弱性)を見つける
- どうやって守るか(リスク軽減)を考える
前半は身近なセキュリティ対策の例として「家(部屋)」を対象に分析し、セキュリティ対策とは何かを理解する。
後半は架空のオンラインショッピングサービスを分析し、ソフトウェア開発におけるセキュリティ対策とは何かを理解する。
スライド
文章を起こすのがつらかったのでスライドで。※slideshare へのリンク
Next Step(兼、参考文献)
今回やったことは「情報システム」に対する「リスクアセスメント」や「脅威モデリング」の一部。
より深く学習するためのキーワードを乗せておく。また、本記事を作成するために参考にした情報にはリンクを張っている。
アセットの特定
分析にはソフトウェアのモデリング(図を起こすこと)が重要。今回のような分析には下記のダイアグラムが有用。
- コンポーネントダイアグラム(アーキテクチャダイアグラム)
- ユースケースダイアグラム
- データフローダイアグラム
脅威・脆弱性
よくある脅威や脆弱性を知りたい場合は OWASP や CWE 等を当たるとよい。過去に発生したセキュリティ事故の事例も参考になる。
- OWASP TOP 10
- OWASP IOT TOP 10
- よくある脆弱性の種類:CWE (Common Weakness Enumeration)
- 報告されている脆弱性:CVE (Common Vulnerabilities and Exposures)
- セキュリティ関連ニュース記事
脅威と脆弱性を特定したり、評価する手法としては下記のようなものがある。
- Abuse case, misuse case
- Attack Surface Analysis
- Threat Modeling (脅威モデリング)
- STRIDE: 脅威の発見
- DREAD: 脅威の評価
- Attack Tree
脅威モデリングについて詳しく知りたい場合、下記の書籍がお勧め。ただし英語。
- Threat Modeling: Designing for Security (Adam Shostack) ISBN-13: 978-1118809990
リスク
リスクマネジメントやリスクアセスメントについてガチで学習したいなら、NISTのリスクマネジメントフレームワーク(RMF)が参考になる。ただし長い。超長い。
リスクマネジメント
NIST SP 800-37 rev.2 Risk Management Framework for Information Systems and Organizations
原文 IPAによる日本語訳 ※rev1
情報システムだけでなく組織のリスクマネジメントを考えるときに参考になる。
リスクマネジメントのプロセスや、リスクマネジメントを1.組織、2.ミッション、3.情報システムの3段階に分けて考えるなど。
Appendix F Summary of RMF Tasks
を眺めると、リスクマネジメントにはどんな活動が必要なのかがなんとなく分かる。ただし多い。
リスクアセスメント
NIST SP 800-30 rev.1 Guide for Conducting Risk Assessments
原文 IPAによる日本語訳
リスクアセスメントの標準的なプロセスを知りたかったらこれ。
Appendix D Threat Source
や Appendix F Threat Event
は脅威探しに非常に役立つ。
リスク軽減策(=セキュリティコントロール)
NIST SP 800-53 rev.4 Security and Privacy Controls for Federal Information Systems and Organizations
原文 IPAによる日本語訳
リスク軽減を考えるときに重宝するのがこれ。
Appendix F Security Control Catalog
や Appendix J Privacy Control Catalog
がセキュリティコントロールのカタログになっており、多数の方法を知ることができる。なんかしないとヤバいことはわかっててもどうすればいいか分からないときは、このカタログを眺めてみるといい方法が見つかるかもしれない。
セキュアアプリケーション開発
ソフトウェア開発プロセスにセキュリティを組み込みたい場合、上記 NIST の RMF のほか、Microsoft SDL が参考になる。