Dependabot PR 自動トリアージ
概要
Takumi は Dependabot の自動トリアージ に対応しています。Dependabot が作成したプルリクエスト (PR) を自動で精査し、セキュリティ的な観点から対応する必要があるかどうかを判断します。
継続的な依存関係の更新はセキュリティの向上に役立ちますが、大量に生成された PR を一つ一つ手動で確認し、セキュリティリスクがないかを分析することは大きな負担となります。Takumi は、人間の代わりに自動的かつ迅速にセキュリティ分析を行い、リスクを検知・判断することで、この課題を解決します。
設計思想
Takumi による自動トリアージは、公開されている脆弱性情報と、お客様のソースコードを読み解くホワイトボックス検証などを組み合わせた独自のアプローチに基づいています。
本機能は 脆弱性を見逃さない ことを最優先に開発しています。なぜなら、重大な脆弱性の見逃しはセキュリティインシデントに直結する可能性を高め、その対応コストは誤検知を確認するコストを大幅に上回るためです。そのため、安全な更新についても「問題がある可能性がある」と報告する場合があります。
実行フロー
GitHub で Dependabot が有効化されている場合に、Dependabot が作成した PR を自動で精査し、セキュリティ的な観点から対応する必要があるかどうかを判断します。
Dependabot が PR を作成すると、Takumi は以下のステップを自動的に実行します。
- PR の監視: GitHub で Dependabot が PR を作成すると、Takumi がこれを検知し、即座に分析を開始する
- 分析の実行: PR 内の依存関係について以下の分析を行う
- セキュリティに関連するか判断(フェーズ 1): PR の内容がセキュリティ分析の対象であるかどうかを判断する。セキュリティとは関係のない更新と判断した場合は、その時点で分析を中断し、不必要なクレジットの消費を防ぐ
- 既知の脆弱性の特定(フェーズ 2): ライブラリに CVE や GHSA といった主要なデータベースに登録されている脆弱性がないかを確認する
- コードベースにおける悪用可能性の 分析(フェーズ 3): 脆弱性が対象のコードベースで実際に悪用可能かどうかを分析・判断する
- リスクの評価: 脆弱性の深刻度と悪用可能性を総合的に評価し、セキュリティリスクを判断する
- 分析結果の通知: 分析結果はワークプレイスの Web ダッシュボードで確認できる。Slack 連携を利用している場合は、Slack にも直接投稿される。重大かつ悪用可能な脆弱性が発見された場合は、Slack チャンネル全体へ即座に通知し、迅速な対応を促す
使用方法
Dependabot 自動トリアージ機能の利用方法には、ワークプレイス(Web コンソール)からの利用と、Slack からの利用の 2 つがあります。
ワークプレイスから利用する
ワークプレイスは GitHub リポジトリをグループ化するための単位です。チーム、プロジェクトなど任意の基準でリポジトリをまとめ、Slack 連携なしで Web コンソールから直接 Dependabot トリアージを管理できます。
設定手順
- サイドバーナビゲーションのワークプレイスをクリックしてください
- 新しいワークプレイスを作成し、対象の GitHub リポ ジトリを選択してください
- ワークプレイスの設定から Dependabot 自動トリアージを有効化してください
- 応答言語(日本語または英語)を設定してください
登録したリポジトリで Dependabot が PR を作成すると、ワークプレイスの Dependabot タブにトリアージ結果が表示されます。
Slack から利用する
Slack 経由で本機能を利用するには、外部連携(GitHub)と Takumi の設定を完了している必要があります。詳細は以下のページをご参照ください。
上記の設定が完了していることを確認してください。その後、以下の画面のようにダッシュボードから、対象の Slack チャンネルで 「Dependabot のトリアージ」 を有効化してください。

この時、レビュー結果の表示言語として、日本語または英語を選択してください。
以上で設定は完了です。これより、Dependabot が PR を作成すると、以下のようなメッセージが該当チャンネルに送信されます。

レビュー結果は最終的にスレッド内に送信されます。以下は、レビュー対象の PR がセキュリティ関連ではないと判断された場合のメッセージ例です。

以下は、レビュー対象の PR が特定の脆弱性に関連し、悪用可能と判断された場合のメッセージ例です。

レビュー結果
セキュリティへの影響度に基づいて、PR を内部的に 4 段階で分類します。この評価は、次に取るべき対応を判断するのに役立ちます。
以下に、分類ごとの詳細と推奨される対応を説明します。
- SECURITY_CRITICAL
- 重大または高深刻度の脆弱性であり、高リスクと判断され、かつ実際にコードベースで悪用可能と判断されたもの
- チャンネルに緊急対応が必要であることを通知し、即座のレビューとパッチ適用を強く推奨する
- SECURITY_HIGH
- 高リスクと判断された、重大・高深刻度の脆弱性だが、現時点のコードベースでは悪用可能ではないもの
- メッセージはスレッド内に投稿される。即座の対応は不要だが、速やかなレビューを推奨する
- SECURITY_MODERATE
- 中程度のリスクと判断された、中・低深刻度の脆弱性
- メッセージはスレッド内に投稿され、必要に応じたレビューを推奨する
- IRRELEVANT
- 最終的な分類が「セキュリティに関連しない」と判断されたもの
- メッセージはスレッド内に投稿される。通常のメンテナンス更新として対応することを推奨する
悪用可能と判断された重大な脆弱性の場合のみ、チャンネルにメッセージをブロードキャストします。 それ以外の場合、Takumi からの通知はスレッド内にのみ投稿されます。
これは、普段の業務に不要なノイズを生み出すことなく、対応が必須なセキュリティリスクにチームが迅速かつ確実に気づけるようにするためです。
PR の自動クローズ機能
Takumi は分析結果を PR に直接コメントすることができます。加えて、最終的な分析結果に基づいて対象の PR を自動でクローズすることも可能です。 この機能により、効率的に PR を自動的に処理し、開発者の手動管理の負担を軽減します。
PR 処理モードの設定方法
Takumi は 3 つの PR 処理モード(保守的、バランス、積極的)を提供しています。各モードは、セキュリティリスクの評価結果に基づいて、どの PR を自動的にクローズするかを決定します。
各処理モードの違い
Takumi は 3 つの PR 処理モードを提供しています。チームの方針やセキュリティ要件に応じて、最適なモードを選択してください。
- 保守的モード では、PR を一切自動クローズしない。Takumi は分析結果のコメントのみを投稿する
- バランスモード では、低リスクのセキュリティ更新(SECURITY_MODERATE)のみをクローズする
- 積極的モード では、Takumi が悪用不可能と判断したセキュリティ更新(SECURITY_MODERATE、SECURITY_HIGH)をクローズする
以下の表は、各分類に対する各モードの動作をまとめたものです。
| 分類 | 保守的モード | バランスモード | 積極的モード |
|---|---|---|---|
| IRRELEVANT | keep | keep | keep |
| SECURITY_MODERATE | keep | close | close |
| SECURITY_HIGH | keep | keep | close |
| SECURITY_CRITICAL | keep | keep | keep |
どのモードを選択しても、以下の動作が保証されます。
- SECURITY_CRITICAL(悪用可能な脆弱性)は自動クローズされない
- IRRELEVANT(非セキュリティ更新)は自動クローズされない
- 分析コメントは全てのモードで投稿される
- 書き込み用 GitHub App を連携していない場合 PR への操作は行われない(PR へのコメントを含む)
GitHub 書き込み権限の設定
PR を自動的にクローズする機能を使用するには、現在連携中の GitHub App に加えて、新たに書き込み処理専用の GitHub App との連携が必要です。
書き込み処理専用の GitHub App を連携するには、以下の手順を実施してください。
- 「設定」>「サービス連携」タブを開いてください
- GitHub 連携の「書き込み権限を有効化」をクリックしてください
- 既存の設定と同様に対象の GitHub 組織にインストールしてください

処理モードの選択
PR 処理モードは、各 Slack チャンネルごとに設定できます。
- ダッシュボードから本機能を有効化しているチャンネルの設定画面を開いてください
- 「PR 処理モード」から、以下のいずれかを選択してください
- 保守的モード
- バランスモード
- 積極的モード
- 設定を保存してください

デフォルトでは 保守的モード が設定されています。前述の説明を読んだ上で必要に応じて変更してください。
トリアージ精度
当社では、公開されている複数の脆弱性情報に基づき、実際に攻撃が可能な状態(悪用可能な状態)を再現した複数のサンプルプログラムを独自に構築し、ベンチマークに使用しています。