ルールでは既知のパターンを検出します。セキュリティ監査ではルールが見逃す部分を調べます:AIのモデルがプロジェクトの最も重要なコードと、前回の監査以降に変更されたコードを読み取り、脆弱性を探します。独立した検証で確認されたもののみが検出結果としてカウントされます。
有効化する方法
セキュリティ → 設定 →セキュリティ監査実行頻度(毎日、週次[デフォルト]、月次)を設定するスイッチがあります。有効化しない限り、プランに応じた設定が適用されます:有料プランでは有効、無料プランでは無効です。無料の組織でも有効化したり、有料の組織でも無効化したりでき、組織全体または個別のプロジェクトごとに設定可能です。
監査では、対象となる各プロジェクトのデフォルトブランチを読み取ります。
実行時の処理内容
- ファイルを選択します。Coroidがプロジェクトのソースファイルをランク付けし、最も重要なものから読み取ります:脅威モデルの影響度が高いパスやエントリポイント、前回の監査以降に変更されたコードを、変更されていないコードより先に読み取ります。1回の実行で読み取るファイル数は最大40件です。
- 脆弱性を探します。各ファイルに対して、モデルは固定された種類の脆弱性を調べます:SQLインジェクション、コマンドインジェクション、クロスサイトスクリプティング、クロスサイトリクエストフォージェリ、サーバーサイドリクエストフォージェリ、パストラバーサル、不正なリダイレクト、不適切なデシリアライゼーション、アクセス制御の不備、認証の不備、ハードコーディングされた認証情報、弱い暗号化、情報漏洩、リソース枯渇です。該当する行番号を明示する必要があり、コード外を指す結果は無効となります。
- 確認します。各問題は「未確認」として記録されます。重大な問題および高リスクの問題については、独立した検証でそのコミットのコードから問題を再導出します。確認できた場合、その問題は確定した検出結果となり、検証済みの静的検出結果が証拠として保存されます。詳細は証拠。
- 類似パターンを探します。脆弱性には類似のパターンが存在します。確定した検出結果ごとに、Coroidがリポジトリ内で同じパターンを検索し、各一致する箇所を同様に検証します。
監査で得られた検出結果はセキュリティ監査をソースとして、セキュリティ → 検出結果に表示されます。
費用について
監査にはAIモデルが使用されるため、他の作業と同様にクレジットとエージェント時間が消費され、実行中はMission Controlに、設定 → アクティビティには費用情報が表示されます。
各実行には予算が設定されています。予算に達した場合、またはクレジットやエージェント時間が尽きた場合、実行は停止し、すでに確認済みの結果は保持されます。次回の実行では最も重要なコードから再開します。大規模なプロジェクトの場合、複数のジョブにわたって実行が続くため、1回の実行でエージェントのスロットを長時間占有することはありません。
検出された問題の修正方法
オーナーおよび管理者は修正を確定した検出結果に適用し、修正タスクを作成できます。詳細は修正用プルリクエストを参照してください。監査自体が自動で修正作業を開始することはまだありません。
監査で得られた検出結果は自身のコード内に存在するため公開されません。パブリックリポジトリ、またはCoroidが可視性を確認できないリポジトリの場合、オーナーまたは管理者が公開するまで修正内容は非公開のまま保持されます。詳細は開示。
証明
計画中。Coroidは、候補となる問題を隔離された環境にある一時的なアプリケーションコピーで実行し、ネットワークアクセス、認証情報、顧客データを一切使用せずに検証し、その証明をリグレッションテストとして保存します。それまでの間、監査の証拠は上記の独立した検証結果となります。
セキュリティ監査レポート
新規作業では、従来の書面によるセキュリティ監査レポートは提供されなくなりました。代わりに、セキュリティ内の監査結果へのリンクが提供されます。