誰かが私に言ったとき、私は私のアプリケーションを安全にするために何をする必要があるかについて質問しました:
それは脅威モデルによって異なります。
脅威モデルとは何ですか?アプリケーションの脅威モデルを作成するにはどうすればよいですか?
FilipedosSantosの回答 は、たとえば Microsoft STRIDE方法論 の下で、正式な脅威モデリング演習を説明するのに役立ちます。
もう1つの優れたリソースは、executionByForkのgithubにある 脅威モデリングコースの概要 です。
このサイトで「脅威モデル」という用語を使用するとき、私は通常、あまり正式でないものを意味します。私は通常、新しいユーザーが「これは安全ですか?」を尋ねる応答として、「安全」がyes/noプロパティであるかのように使用します。通常、次のような段落の一部です。
それは脅威モデルによって異なります。 「安全」は重要ではありません。セキュアに対して?あなたの子供姉妹があなたのiPhoneを覗き見していますか?外国政府がデータセンター機器にチップをはんだ付けしていますか?またはその間に何か?
私は本当に気に入っています Electronic Frontier Foundationの脅威モデリングフレームワーク 。これは次の3つの質問をすることに焦点を当てています。
- 何を保護していますか?
- 誰から保護していますか?
- それを保護するためにいくつのリソースを投資できますか?
EFFがこれを書いた方法が本当に好きです。これらのシンプルで簡単に答えられる質問は、セキュリティの背景がゼロの人が「適切なセキュリティ量」を理解できるように導くためです。
このすばらしい抜粋は、 脅威モデリングに関するOWASPページ からのこの抜粋にあります:
脅威モデルは基本的に、アプリケーションのセキュリティに影響を与えるすべての情報の構造化された表現です。本質的には、セキュリティグラスを通して見たアプリケーションとその環境のビューです。
どのように脅威モデルを作成するかは、適用される脅威モデリング方法論にのみ依存します。業界で使用されている最も一般的な方法の1つは Microsoft's であり、これは STRIDEモデルの脅威 に基づいています。
通常、脅威モデリングワークショップ/セッションは、すべての開発者、製品所有者、セキュリティ専門家、およびモデレーター(チームで作業していない場合は単独で行うことができます)が参加する円卓会議です。関係するものは、その方法論によって提案されたステップを順番に実行し、結果はスレッドモデルドキュメント/アーティファクトになります。
マイクロソフト脅威モデリング手法の1つは、5つの主要なステップを定義します。
私が働いている会社は同様の方法論を使用しており、開発中のすべての製品に必要です。私が非常に興味深いと思う1つの違いは、製品全体の脅威モデルを作成できること、または製品の使用事例ごとに脅威モデルを作成できることです。
最後に、脅威モデルは多くの脅威モデリングセッションの結果です。そこでは、開発チーム、POおよびセキュリティの専門家が考えられる脆弱性を見つけるためにブレインストーミングし、定義された方法論を使用して脅威モデルドキュメントを作成します。
脅威モデルは質問に答えます具体的なソフトウェアに対して合理的に予想される脅威は何ですか(または「システム」)。 コンクリート(==学問的/理論的ではない)に重点を置き、合理的に(==ないoverbearing、偏執病とも呼ばれる)
偏執的な脅威モデルは、(文字通り)すべてを麻痺させる可能性があります(ソフトウェアに限定されません)。学問的/理論的な脅威モデルは、防御/緩和のコストを無限に増加させる可能性があります。
脅威モデルは、保護したいものの生と死に関するものであり、処理する必要があるものと顧客の処理するものまたは「より大きなシステム」が処理することが期待されています。 あなたは誰を信頼しているか、なぜ信頼していないか? "why"の部分は非常に重要であり、その答えは「原因」ではありません。あなたは責任の境界を定めています。
防御および緩和計画は脅威モデルの一部ではありません。緩和とは、何かが合理的に防御可能でないか、または認識されている脅威が、大規模なナンセンスまたは一時的流行(過去数年間で数回-良い見出し-NSAによる最新)
例:
#1軍事請負業者がエンジン(またはデバイス/車両全体)のFEM解析を行うサーバーを作成しているとします。合理的に予想される脅威とは何ですか?サービス拒否と機密性。何ですか?なりすまし、改ざん、否認、特権の昇格。
どうして?
認証と承認、および(はるかに強力な)暗号化は、ソフトウェアの外部のシステムによって処理されます(クライアントの「環境」によって処理されることが合理的に期待され、通常は処理されます)。 「完全性」を壊しても意味がない(分析に壊れたメッシュを送信する)、あなたが気にしない否認(誰かが「壊れたメッシュ」または「実際には「エンジン」ではないメッシュ)を送信し、それを否定した-無関係となしの間あなたのビジネスの)。
サービス拒否はあなたに本当に害を及ぼす可能性があり(サーバーが仕事をしていない==お金がない)ありそうです(ことわざから、「ロシア人」から通りの向こう側への競争、「中国からの一般的なネット攻撃」まで-起こりました、起こります。ダメージは本物です)。機密性-クラウドを信頼することはできません-.gov Azureでさえ、たとえ米国の会社であっても(誰かがワイヤーフレームをロッキードに売るでしょう)、クライアントが中国人、ロシア人、ドイツ人、または英国人であるかどうかは言うまでもありません...-あなたは写真を持っています
#2会計ソフトウェアまたは銀行ソフトウェアを「サービスとして」記述/移植するとします。合理的に予想される脅威とは何ですか?なりすまし、改ざん、否認。何じゃないの?サービス拒否。多分何ですか?特権の昇格(ソフトウェアの性質による)。何が複雑ですか?守秘義務。
どうして?クラウドにアクセスする必要があります(DoSを処理します)。機密性は、その基幹業務の法的カテゴリーであり、法的システム(ガールフレンドの笛を吹く「モグラ」から保護されているかどうか)です。 CEOはあなたのビジネスではありません)。矛盾する要求に答えているため、責任が複雑になります。弁護士が必要です。
一方、否認防止は、多かれ少なかれ、ビジネスの基本であり、頻繁に発生します。過剰な監査を有効にするために、契約上または法的にも必要になる場合があります。改ざんは関連しており(誰かが改ざんが可能であることを証明します-否認防止は無効です)、攻撃者にとって非常に致命的で魅力的です(お金、お金、お金)。 (通常の)暗号を破ることなく改ざんを行うことができます。「改ざん」には多くの足があります。
なりすましは「認証」ではありません-第三者が気づかずにやり取り/トランザクション(お金の移動、販売記録など)を記録できることです。」なりすましの2番目の部分は実際に改ざんされています(データを「オンザフライ」で変更せずに誰もが気づく)実際の「中間者」攻撃。「誰にも気付かれずに」が決定的な側面です。認証をまったく破る必要はなく、そうしないほうがいいです-究極の「気付かない」 )。
特権の昇格が問題である場合とそうでない場合があります。システムが「ネットワーク経由で」サービスとして提供しているものと、プライベート/セキュリティで保護されたチャネル(常に誰か他の人の問題です)、クライアントは誰であり、統合したい/する必要があるかによって異なります。より大きなシステムに組み込むか、独自のシステムを作成します。あなたは両方をしなければならないかもしれませんが、重要な側面は何を、そしてなぜ知っているかです。
物事が非常に簡単に非常に異なるものになる方法をご覧ください。誰かが「あなたは脅威モデルを持っていますか」と尋ねると、彼は「あなたはあなたの非常に特別なケースで何を防御しなければならないか知っていますか」と尋ねています。
脅威モデリングは、セキュリティを考慮するためのモデルの使用です。これは、「ランダムなOracle脅威モデルを検討する」などの非常に単純なものでも、データフロー図を使用してアプリケーションをモデル化し、STRIDEを使用して脅威を検出するなど、より構造化された体系的な分析アプローチでもかまいません。
脅威モデリングの中心として、4つの質問のフレームワークを提唱します。
これらのそれぞれに答える方法はたくさんあります。Webアプリを状態マシンとしてモデル化できます。キルチェーンを使用して、問題の原因に対処できます。それを処理するための戦略として、除去/緩和/転送/受け入れを検討できます。緩和には、解析コードのリファクタリングやTLSの追加など、優先順位付けのアプローチや戦術がたくさんあります。
このフレームワークが機能するのは、エンジニアが理解してアクセスできるもの、つまりエンジニアが取り組んでいるものから始まるためです。また、振り返りには明確な時間があり、調整を行って学習を支援する時間があるため、この方法も機能します。
また、「STRIDEを脅威モデルに使用している」と言うのではなく、「STRIDEを使用して何が問題が発生しているのかを理解するのに役立つ」と言うこともできます。脅威のモデリングとは、それを行うためのさまざまな方法を議論することです。
これはソフトウェア中心のアプローチであり、資産中心のアプローチと攻撃者中心のアプローチもあります。アセットインベントリは難しく、時間がかかるため、アセット中心のアプローチは失敗する傾向があります。多くの場合、リストには評判のようにまとまりのないものが含まれています。資産中心のアプローチは、ソフトウェアプロジェクトチームが引き受けるときにも失敗します。これは、ほとんどの資産がプロジェクトの範囲外にあるか、プロジェクトの独自の制御で資産を特定することが難しいためです。ほとんどの攻撃者にインタビューすることが不可能であるため、攻撃者-ペルソナアプローチは失敗する傾向があり、「参加者にインタビューする」ことはペルソナを作るための重要なステップです。また、攻撃者のリストを作成することは問題があり、パスに依存していることを意味します。キッズ、トロール、または国家を含めない場合、重要な脅威を見逃します。