脅威モデルとは、プロジェクトが攻撃を受ける可能性のある箇所や、攻撃された際に最も重要な要素を指します。セキュリティ機能では、各プロジェクトごとに脅威モデルを「セキュリティ」→「脅威モデル」で管理し、コードからドラフトを生成してチームで編集します。
ドラフト
Coroidはデフォルトブランチを読み取って最初のバージョンを生成します。AIモデルは不要なため、ドラフト作成にコストはかかりません。他のスキャン処理と同様に、エージェントスロットの1つで実行されます。JavaScript、TypeScript、Pythonを対象に解析を行い、以下の情報を抽出します:
- エントリーポイント:HTTPルートやハンドラー、OpenAPI操作、キューコンシューマー、コマンドラインコマンドなど
- 信頼境界が変化する箇所:認証ミドルウェアやその他の境界線
- 機密データ:設定値やシークレットが読み込まれる場所(値ではなく名前のみ)。
- 認証チェックが行われていない書き込み処理
モデルは「エントリーポイント」「信頼境界が変化する箇所」「機密データ」「最重要項目」「ユーザーメモ」の5つのセクションで構成されます。また、読み取れなかった内容やその理由も記載されます。例えば、サイズが大きすぎるファイルや読み取り不能なファイル、未対応の言語、制限に達した場合などです。
ユーザーの変更内容は保持される
各エントリには作成者が記録されます。Coroidは人が記述した内容を上書きすることはありません。
毎週、およびオーナーや管理者が選択したタイミングでコードを再読み込み、Coroidはコードを再度読み込みます。モデル自体は変更されず、代わりに追加・更新・削除すべきエントリの案が提案されます。オーナーや管理者はそれらを新しいバージョンに採用するか、却下するかを決定します。却下された変更案は再び提案されることはありません。
変更案が採用されると、Coroidは該当しなくなったエントリをスキップします。つまり、ユーザーが既に変更したエントリ、既に存在するエントリ、または削除されたエントリです。スキップされた内容も明記されます。Coroidが削除を提案するのは、自身のドラフトで記述されたエントリのみで、かつ全コードを読み込んだ後のみです。ユーザーが記述した文言は維持され、コード内で発見された内容のみが更新されます。
バージョン
バージョン1はドラフトです。採用された提案や編集ごとに新しいバージョンが作成され、履歴には誰が何をしたかが記録されます。具体的には、コードから生成されたドラフト、人による編集、Coroidによる更新、設定からのインポートなどです。
変更できるユーザー
プロジェクトを閲覧できる全ユーザーは脅威モデルを読むことができます。オーナーと管理者はモデルを編集し、提案を採用/却下し、Coroidにコードの再読み込みを依頼できます。
利用方法
「セキュリティ監査」セキュリティ監査は脅威モデルを参照して、最初に読み込むファイルを決定します。モデルで指定された影響度の高いパスやエントリーポイントにあるコードが、他のコードより先に読み込まれます。
設定のポータビリティ
各プロジェクトの最新の脅威モデルは組織の設定バンドル内に含まれます。その履歴や未処理の提案案は元の場所に残ります。詳細は設定のポータビリティ。