
脅威モデリングに入門したい
こんにちは。貴島(@jnkykn)です。2週連続してTypeScript入門の記事を書いてきましたが、今日は、去年から気になっている脅威モデリングについて学びたいと思います。手始めに、社内の脅威モデリングワークショップに参加するための予習を兼ねて「STRIDE」について学習します。そうだ、2月ってサイバーセキュリティ月間ですね。
脅威モデリング入門
脅威というのは、自然災害のような強い力によって生活を脅かすもののことです。特に情報セキュリティ分野では、組織や個人の情報資産に損失を与える要因を脅威と呼んでいます。毎年IPAから「情報セキュリティ10大脅威」が公開されていて、「組織」「個人」それぞれの脅威が紹介されています。
脅威はわかるのですが、脅威モデリングとは、どんなものなのでしょう?
脅威モデリングって何?
脅威モデリングは、システム設計またはアーキテクチャを系統的にレビューし、設計レベルのセキュリティ問題を発見して修正する手法です。
システム設計の段階で、どんな脅威があるか?を洗い出して、対策していく手法なんですね。これはつまり、シフトレフトってことでOK?
脅威モデリングとは? | Cloudflare
https://www.cloudflare.com/ja-jp/learning/security/glossary/what-is-threat-modeling/
STRIDEって?
STRIDEは、マイクロソフト社が開発した脅威分析モデルの手法とツールで、Spoofing(スプーフィング)、 Tampering(改ざん)、 Repudiation(否認)、 Information Disclosure(情報漏えい)、 Denial of Service(サービス拒否)、 Elevation of Privileg(権限の昇格)の頭文字を取ったものです。STRIDEでは、システムをコンポーネントに分解し、各コンポーネントの脅威に対する脆弱性を分析して、脅威を軽減していきます。2006年の下記の記事で、詳細が紹介されています。
コンポーネント単体の他、信頼境界の交差部分についても脅威を洗い出します。脅威モデリングの手法には、STRIDEのほか、PASTA、VAST、SQUARE、Trikeなどがあるそうです。
脅威分析の役割と手法の紹介(pdf)
STRIDEの手順
システムを複数の部分に分解して、データフロー、データストア、プロセス、インタラクターの4つの構成要素でデータフロー図(DFD)を作成し、更に信頼境界を追加します。このDFDを正しく作成できるかどうか?が、脅威モデルを正しく作成するための鍵になるようです。例えば、データベースが、データ収集プロセスとは別のマシンに保存されている場合は、それがわかるようにDFDに反映されていない場合、正しく脅威分析ができないなど、DFDの不備が脅威モデリングの正確さに影響することが予想できます。
データフロー:1方向の矢印。ネットワーク接続、名前付きパイプ、メールスロット、RPCチャネルを介して移動するデータ
データストア:2本の平行な水平線。ファイル、データベース、レジストリ キーなど
プロセス:円。コンピューターによって実行される計算またはプログラム
マルチプロセス:2つの同心円。
インタラクター:矩形。システムのエンドポイント(人、Webサービス、サーバーなど)
信頼境界:点線。信頼できる要素と信頼できない要素の境界(主観的)
DFDが書けたら、DFD内のデータフローをもとに、データフローの各段階のデータが受ける脅威の影響を洗い出します。転送中のデータは、情報漏洩リスク、サービス拒否攻撃の被害に遭う可能性、改ざん、認証システム不備によるスプーフィングなどの可能性があります。データの保存先が同一マシンかリモートか?によっても信頼境界が変わるので、データの保存先もわかるように作図することも忘れないようにしたいポイントです。
次に、収集プロセスを装うスプーフィングなど、プロセスに対する脅威を洗い出します。攻撃者がプログラムの内部構造について何かを発見した場合、他の種類の攻撃が可能になります。例えば、実行中のプロセスのメモリを読み取ることができれば、攻撃者は、データベースにアクセスしなくても、プロセスメモリから必要な情報を読み取ることができる可能性があります。
すべてのデータフローとデータストア、すべてのプロセスに対する6つのSTRIDE脅威を、繰り返し洗い出します。繰り返すことで、最初の分析では上がらなかった脅威が見つかることもあり、分析の精度が上がるようです。
まとめ
STRIDEとは何か?どう使うのか?についてざっと調べたのですが、実際にDFDを書いたり、脅威の洗い出しをしてみないと理解が浅いままだなと思いました。(1回読んだだけで頭に入るとは思えないので)社内の脅威モデリングワークショップに参加する前に、Uncover Security Design Flaws Using The STRIDE Approachの解説を見ながら、サンプル課題を試したいと思います。
社内の脅威モデリング勉強会では、「洗い出しの方法よりも、どんなことが発生しそうか?を考えることが重要」という説明があったので、10大脅威に挙げられている脅威はもちろん、様々な脅威についての知識が必要だなと思いました。
参考リンク
更新履歴
NISCサイバーセキュリティ月間のリンクを2024年版から2025年版に修正。今年は、TT兄弟が起用されています。(2025-02-09)