Skip to main content
Security Swarm は、Devin のセキュリティスキャンと修復のためのプロダクトです。コードに合わせて最適化された脅威モデルを構築し、潜在的な脆弱性を調査・検証したうえで、プルリクエストを通じて検出結果の修正を支援します。リモートコード実行 (RCE) 、SQL インジェクション、パストラバーサル、サーバーサイドリクエストフォージェリ (SSRF) 、認可バイパス、メモリ安全性の不具合、サービス拒否脆弱性などを特定できます。複数のファイルにまたがる連鎖的な攻撃も特定可能です。 Security Swarm は、私たちが Agentic MapReduce と呼ぶ、複数の Devin を組み合わせたカスタムオーケストレーションです。リポジトリを並列の Devin に分割することで、コストを抑えながら広いカバレッジと深い調査を実現し、大規模なコードベースも費用対効果よくスキャンできます。また、GitHub Advisory Database で公開されている脆弱性の正解データセットを用いて、Security Swarm のベンチマークも実施しました
スキャンを実行するには、次の条件を満たしている必要があります。
  • スキャン対象のリポジトリに、あなたの組織がアクセスできる必要があります。
  • Devin セッションの利用が許可されている必要があります。
  • コードスキャンを利用する 権限が必要です。
  • 自動スキャンのスケジュールを設定するには、コードスキャンを管理する と、自動化を管理する権限も必要です。
サイドバーに セキュリティ が表示されない場合やスキャンを開始できない場合は、管理者にロールを確認してもらってください。詳細は アクセスと権限 を参照してください。

最初のスキャンを実行する

  1. 左側のサイドバーでセキュリティを開き、Start scanをクリックします。
  2. Single repoで、スキャン対象のリポジトリを選択します。
  3. Interactive modeが有効になっていることを確認します。
  4. Run Scanをクリックします。
  5. 提案された脅威モデルの準備ができたら内容を確認し、Looks good, start scanningをクリックするか、フィードバックを送信します。
  6. 検出事項が表示されたら、証拠を確認し、対応が必要な検出事項に対処します。
繰り返し実行するスキャンには、対象範囲、脅威モデル、重大度の基準、検証手順、修正時の制約をまとめたプロファイルを作成してください。

findings を確認して対応する

スキャンを開くと、その findings を確認できます。ページには、左側に重大度ごとにグループ化された findings の一覧が表示され、右側には選択した finding の詳細が表示されます。 ステータスタブには、リアルタイムの件数が表示されます。
  • Open — 対応が必要です。
  • Reviewed — レビュー済みで、追加の対応は不要です。
  • Dismissed — 誤検知または重複と判断されました。
スキャンの実行中は、findings が届くたびにページが自動的に更新されます。
Reviewed はワークフロー上のステータスであり、対処法がマージされたことを示すものではありません。finding は手動で Reviewed にすることも、後続のスキャンで存在しなくなったと判断された場合に Reviewed になることもあります。

検出結果に含まれる内容

検出結果には、次の内容が含まれます。
  • 重大度、ステータス、悪用可能性、確信度、カテゴリ
  • 影響を受けるファイルパスとコードスニペット
  • 問題の説明修復の推奨事項
  • サンドボックス検証結果、裏付けとなる証拠、および検証アーティファクト。
  • 関連するプルリクエストと、それらのオープン、マージ済み、またはクローズ済みの状態。
  • 利用可能な場合は、コードオーナーとメモ。
リスクのあるコードパターンは、脆弱性の証拠ではなく手がかりとして扱ってください。検出結果が、攻撃者が制御可能な入力から到達可能な経路を追跡していること、入力検証や認可の制御を適切に考慮していること、そして具体的なセキュリティへの影響を説明していることを確認してください。

検出結果に対応する

問題を修正してプルリクエストを作成するための Devin セッションを開始します。セッションと作成されたプルリクエストは、この検出結果に紐づけて追跡されます。

スキャンプロファイル

スキャンプロファイルは、スキャンの対象範囲を定め、スキャンの各段階に指針を与えます。各スキャンで利用できるプロファイルは1つだけです。複数の攻撃者ペルソナや脅威カテゴリに対してリポジトリを評価するには、異なるプロファイルで個別にスキャンを実行します。
具体的な脅威モデルは、スキャン間でカバレッジの一貫性を保つための最も効果的な方法の1つです。攻撃者、機密資産、信頼境界、重要な侵入経路、明示的な除外事項を定義してください。
プロファイルは、セキュリティページのProfilesタブから管理できます。

プロファイルを作成する

プロファイルは、次の2つの方法で作成できます。
  • Devin で生成 — アプリケーション、脅威、スコープ、除外事項、重大度の基準を自然言語で記述します。Devin がプロファイルのドラフトを作成します。
  • 手動で作成 — プロファイルの各入力項目を自分で入力します。
Devin で生成する方法は便利な出発点ですが、プロファイルを利用する前に、生成された各項目を必ず確認してください。任意のガイダンス項目を空欄のままにすると、その段階では Security Swarm の標準的な動作が適用されます。

基本情報

  • プロファイル名 — スキャンを実行するチーム名ではなく、アプリケーションの対象領域や脅威カテゴリを表す名前にします。例: Multi-tenant API authorization.
  • 説明 — プロファイルの対象範囲とセキュリティ上の目的を簡潔にまとめます。例: Find authentication, authorization, and tenant-isolation vulnerabilities in the public API.
以下の使用例は、マルチテナント API 向けの単一のプロファイルにまとめたものです。対象範囲、コマンド、重大度の基準は、アプリケーションに合わせて調整してください。

脅威モデル

攻撃者、機密資産、信頼境界、重要な侵入経路、明示的に対象外とする項目を記述します。この指針は、調査開始前に Devin が生成するルールの内容に反映されます。

調査ガイダンス

Devinが潜在的な問題をどのように調査し、どのような証拠を収集すべきかを定義します。既存の緩和策を考慮し、実際に到達可能な脆弱性と理論上の懸念を区別するよう指示してください。

トリアージの指針

Devin が検出事項の重複をどのように排除し、どのように優先順位を付けるかを定義します。結果が組織の基準に沿うよう、重大度の判定基準も含めてください。

サンドボックス検証

Devinが安全にアプリケーションをビルドして実行できる場合は、サンドボックス検証を有効にしてください。アプリケーションの起動方法、テストデータの作成方法、認証方法、想定されるセキュリティ境界の示し方を説明してください。
検証が成功しなかったからといって、必ずしも検出結果が誤りだとは限りません。検証結果とアーティファクトを確認し、有効な緩和策によって悪用が防がれたのか、あるいは設定された環境のために Devin がテストを完了できなかったのかを判断してください。
サンドボックス検証では、検出結果ごとに個別の Devin セッションが開始されます。環境に関するガイダンスについては、サンドボックス検証を設定するを参照してください。

レポート

スキャン後に要約レポートが必要な場合は、レポートを有効にします。想定読者と、レポートで特に強調すべき情報を指定してください。

修正ガイダンス

修正のために検出事項をDevinに割り当てる際は、Devinが従うべき制約を指定します。テストに関する要件、互換性の要件、避けるべきプラクティスを含めてください。

詳細入力

Advanced を開くと、ファイルの対象範囲と調査バッチを設定できます。
  • Include globs — マッチするファイルのみにスキャンを限定します。たとえば、apps/api/**packages/auth/** です。
  • Exclude globs — 選択した対象範囲から無関係なファイルを除外します。たとえば、**/generated/****/vendor/****/fixtures/** です。
  • Batch size — シグナルがあるファイルを、各調査バッチにいくつずつまとめるかを設定します。スキャンの挙動を意図的に調整するのでなければ、デフォルトのままにしてください。設定可能な範囲は 1~500 で、デフォルトは 5 です。
除外範囲が広すぎると、脆弱なコードを見落としたり、データフローを理解するために必要な前提情報が失われたりするおそれがあります。プロファイルに無関係であると確信できるファイルだけを除外してください。

組織プロファイルとEnterpriseプロファイル

新しいプロファイルは組織スコープです。Enterprise管理者は後からプロファイルの公開範囲をEnterpriseに変更でき、Enterprise全体で利用できるようにできます。 Enterpriseプロファイルを編集またはアーカイブできるのは、Enterprise管理者のみです。Securityにアクセスできるその他のユーザーは、これらのプロファイルを閲覧して利用できますが、変更はできません。

インタラクティブモード

インタラクティブモード を有効にすると、Devin は脅威モデルの案を作成し、調査を開始する前に一時停止します。スキャンページには提案されたルールが表示され、次の操作を行えます。
  • Looks good, start scanning — 脅威モデルを承認して調査を開始します。
  • Provide feedback on the threat model — 追加・削除したい点や、特に重視したい点を指定し、修正後のモデルを確認します。
リポジトリを初めてスキャンするときや、リスク範囲またはプロファイルが大きく変わったときは、インタラクティブモードを利用してください。承認済みのガイダンスがプロファイルに反映されたら、以降の通常のスキャンは一時停止なしで実行できます。

サンドボックス検証を設定する

サンドボックス検証は、選択したプロファイルでサンドボックス検証が有効になっており、かつ検証ガイダンスが含まれている場合にのみ実行されます。Devin がサンドボックス内でアプリケーションをビルド、実行、シード、認証できるよう、十分な情報を与えてください。 リポジトリに宣言的設定がある場合、Devin はそのビルドおよびインストール設定を再利用できます。ない場合は、必要なセットアップコマンドをプロファイルの検証ガイダンスに追加してください。
本番用の認証情報やシークレット値をプロファイルのガイダンスに直接記載しないでください。組織の環境構成ですでに提供されている非本番のテストアカウントと認証情報を利用してください。

スキャンを拡張する

複数のリポジトリをスキャンする

組織全体でスキャンをキューに追加するには、New Scanダイアログのすべてのリポジトリタブを利用します。
  1. 必要に応じてリポジトリ名フィルターを入力します。
  2. 必要に応じてスキャンプロファイルを選択します。
  3. 選択したプロファイルですでにスキャンされているリポジトリを除外するには、すでにスキャン済みのリポジトリをスキップを有効のままにします。
  4. プレビューをクリックします。
  5. 条件に一致したリポジトリを確認し、スキャンしたくないものは選択を解除して確定します。
このプレビューはドライランです。フィルター、プロファイル、またはスキップ設定を変更するとプレビューは無効になるため、古い一覧は確定できません。

自動スキャン

自動スキャンは、前回完了したスキャン以降に追加されたコミットを定期的にスキャンします。設定方法は次のとおりです。
  • 単一リポジトリのスキャンを開始するときに、日次、週次、月次、またはカスタムのスケジュールを選択する。
  • 既存のスキャンで、スケジュールを追加、編集、無効化、またはすぐに実行する。
スケジュールの時刻は、お使いのローカルタイムゾーンで表示されます。
自動スキャンは、自動化が組織で有効になっている場合にのみ利用できます。設定するには、コードスキャンの管理権限と、自動化を管理する権限の両方が必要です。
自動スキャンは増分方式です。各実行では、前回完了したスキャン以降に追加されたコミットのみを調査します。代わりに スキャンを開始 をクリックすると、既定ではリポジトリ全体をフルスキャンします。

新しいコミットをスキャンする

完了済みのスキャンで 新しいコミットをスキャンする をクリックすると、そのスキャンで最後にスキャンされたコミット以降に追加されたコミットを調査できます。Auto Scan も同じ増分方式を利用するため、以降のスキャンはリポジトリ全体を繰り返しスキャンするよりも低コストです。

スキャンの管理と監視

スキャンとそのプロファイルによっては、スキャンのヘッダーに次の項目が表示されます。
  • レポート — スキャン用に生成されたレポートをダウンロードします。
  • 使用量 — 消費したACU、セッション数、スキャン時間、PRの統計を閲覧します。
  • セッション — スキャンを実行したメインのDevinセッションを開きます。
  • CSVとしてエクスポート — スキャンの検出結果をエクスポートします。
  • アーカイブ または アーカイブ解除 — スキャンをデフォルトの一覧から非表示にするか、一覧に戻します。
  • 新しいコミットをスキャン — 増分スキャンを開始します。
スキャンはDevinセッションとして実行され、ACUsを消費します。

セキュリティダッシュボード

組織で最初のスキャンが完了すると、セキュリティページに、過去7日間、30日間、または90日間の組織全体のダッシュボードが表示されます。
  • プルリクエストの統計 — 作成、マージ、オープン、クローズされたプルリクエスト数と、マージ率。
  • 検出事項の推移 — 選択した期間内の検出事項を重要度別に表示します。

アクセスと権限

セキュリティへのアクセスは、ロールエディタ内のコードスキャン権限によって制御されます。 スキャンの開始、フィードバックの送信、検出結果のDevinへの割り当てには、Devinセッションを利用する権限も必要です。さらに、Auto Scanには自動化を管理する権限が必要です。 デフォルトでは、メンバーにはコードスキャン権限は付与されません。オーナーはすべての権限を持ち、管理者はカスタムロールを通じてメンバーに権限を付与できます。

Security Swarm を別のスキャナーと比較する

有意義な比較を行うには、両方のスキャナーに同じスコープ、脅威モデル、重大度の基準、検証に求める水準を設定してください。そうしないと、設定の違いによって、本来の能力差が見えにくくなることがあります。 プロファイルを利用して比較基準を定義し、インタラクティブモードで生成された脅威モデルを確認し、サンドボックス検証を利用して報告された検出結果に同じ証拠基準を適用してください。

よくある質問

Security Swarm は、危険なパターンを個別に報告するのではなく、リポジトリの前提情報に照らして潜在的な脆弱性を調査します。Devin は関連するデータフローを追跡し、検証や認可の制御を確認したうえで、その問題に具体的なセキュリティ上の影響があるかどうかを評価します。各検出結果には、確信度レベルと裏付けとなる証拠が含まれます。特に、検出結果がサンドボックスで検証されていない場合は、対応する前にその証拠を確認してください。
影響を受けるコード、エントリーポイント、データフロー、既存の緩和策、記載された影響、確信度、悪用可能性を確認してください。サンドボックス検証が有効な場合は、検証結果とそれを裏付ける成果物も確認してください。証拠で制御が見落とされていたり、裏付けのない影響が示されていたりする場合は、Feedback を利用して、今後のスキャンに向けて不足している前提情報を与えてください。
サンドボックス検証では、隔離された環境でアプリケーションをビルドして実行し、検出結果の再現を試みます。検証が成功すると悪用可能性についてより強い証拠が得られ、検証が成功しなかった場合は、追加の確認が必要な前提や環境上の制約を特定できます。サンドボックス検証は任意であり、Devin がアプリケーションを安全にビルド、実行、シード、認証できるようにするための十分な 検証ガイダンス が必要です。
Security Swarm はリポジトリの各部分を並列に分析し、その結果をリポジトリ全体の観点に統合します。これにより、あるエンドポイントが別のエンドポイントを悪用するために必要な識別子を公開している、といったコンポーネント間の関係を特定できます。その結果として得られる連鎖的な検出結果でも、関連するコードパスを特定し、個々の条件がどのように組み合わさって具体的な影響につながるのかを説明する必要があります。
Security Swarm はエージェント型の分析を利用しているため、別々のスキャンで同一の検出結果や表現になるとは限りません。対象範囲を絞り込み、脅威モデルを明示し、重大度の基準を明確にし、具体的な調査ガイダンスを与えることで、カバレッジの一貫性を保ちやすくなります。これらの要件を再利用可能な スキャンプロファイル に記録し、インタラクティブモード を利用して提案された脅威モデルを確認し、結果が重要な前提情報を見落としている場合は Feedback を与えてください。
いいえ。完全なカバレッジを保証できるセキュリティスキャナーはありません。結果は、選択したスコープ、profile のガイダンス、利用可能なリポジトリの前提情報、そして設定された環境で検出結果を検証できるかどうかに左右されます。攻撃者モデルや脅威カテゴリごとに個別のスキャンを実行し、アプリケーションの変更に合わせて profiles を最新の状態に保ち、既存のセキュリティレビューやテストの実践とあわせて Security Swarm を利用してください。