Dependabot トリアージ
機能概要
「Takumi」は Slack や WebUI を通じて手動で仕事を依頼できるだけでなく、イベント駆動でレビューを行う機能も提供しています。
具体的には、GitHub で Dependabot が有効化されている場合に、Dependabot が作成したプルリクエスト(PR)を自動で精査し、セキュリティ的な観点から安全かどうかを判断します。
継続的な依存関係の更新はセキュリティの向上に役立ちますが、大量に生成されたPRを一つ一つ手動で確認し、セキュリティリスクがないかを分析することは大きな負担となります。
Takumiは、この課題を解決します。人間の代わりに自動的かつ迅速にセキュリティ分析を行い、リスクを検知・判断することで、チームの負担軽減とプロジェクトの安全性向上に貢献します。
設計思想
本機能は「脆弱性を見逃さない」ことを最優先に開発されています。そのため、安全な更新についても「問題がある可能性がある」と報告する場合があります。
理由として、重大な脆弱性の見逃しはセキュリティインシデントに直結する可能性を高め、その対応コストは誤検知を確認するコストを大幅に上回るためです。
Takumiの分析は、公開されている脆弱性情報と、お客様のソースコードを読み解くホワイトボックス検証などを組み合わせた独自のア プローチに基づいています。
しかしながら、このアプローチには制約も存在します。例として、公開されている情報は時として、脆弱性の具体的な説明が乏しい場合や、その脆弱性を再現する方法などが不足している場合があります。
このような制約があるからこそ、Takumiは偽陰性(実際の脅威の見逃し)を最小限に抑えることに注力しています。言い換えると、偽陽性を許容していると言えます。
その結果、偽陽性(ノイズとなりうる場合)を許容している側面もありますが、より精度の高い分析を実現するため、日々継続的な研究開発に取り組んでいます。
実行フロー
DependabotがPRを作成すると、Takumiは以下のステップを自動的に実行します。
- PRの監視: GitHubでDependabotがPRを作成すると、Takumiがこれを検知し、即座に分析を開始します。
- 分析の実行: PR内の依存関係について以下の分析を行います。
- セキュリティに関連するか判断(フェーズ1): PRの内容がセキュリティ分析の対象であるかどうかを判断します。セキュリティとは関係のない更新と判断した場合は、その時点で分析を中断し、不必要なクレジットの消費を防ぎます。
- 既知の脆弱性の特定(フェーズ2): ライブラリにCVEやGHSAといった主要なデータベースに登録されている脆弱性がないかを確認します。
- コードベースにおける悪用可能性の分析(フェーズ3): 脆弱性がお客様のコードベースで実際に悪用可能かどうかを分析・判断します。
- リスクの評価: 脆弱性の深刻度と悪用可能性を総合的に評価し、セキュリティリスクを判断します。
- 分析結果の通知: 分析結果をSlackに直接投稿します。重大かつ悪用可能な脆弱性が発見された場合は、チャンネル全体へ即座に通知し、迅速な対応を促します。
使用方法
本機能を利用するには、外部連携(GitHub)と Takumi の設定を完了している必要があります。詳細は以下のページをご参照ください。
上記の設定がされていること確認をしてください。その後、以下の画面のようにダッシュボードから、対象の Slack チャンネルで 「Dependabotのトリアージ」 を有効化してください。

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

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

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

レビュー結果
セキュリティへの影響度に基づいて、PRを内部的に4段階で分類します。この評価は、お客様が次に取るべき対応を判断するのに役立ちます。
以下に、分類ごとの詳細と推奨される対応を説明します。
- SECURITY_CRITICAL
- 重大または高深刻度の脆弱性であり、高リスクと判断され、かつ実際にコードベースで悪用可能と判断されたものです。
- チャンネルに緊急早急な対応が必要であることを通知し、即座のレビューとパッチ適用を強く推奨します。
- SECURITY_HIGH
- 高リスクと判断された 、重大・高深刻度の脆弱性ですが、現時点のコードベースでは悪用可能ではないものです。
- メッセージはスレッド内に投稿されます。即座の対応は不要ですが、速やかなレビューを推奨します。
- SECURITY_MODERATE
- 中程度のリスクと判断された、中・低深刻度の脆弱性です。
- メッセージはスレッド内に投稿され、必要に応じたレビューを推奨します。
- IRRELEVANT
- 最終的な分類が「セキュリティに関連しない」と判断されたものです。
- メッセージはスレッド内に投稿されます。通常のメンテナンス更新として対応することを推奨します。
悪用可能と判断された重大な脆弱性の場合のみ、チャンネルにメッセージをブロードキャストします。 それ以外の場合、Takumi からの通知はスレッド内にのみ投稿されます。
これは、普段の業務に不要なノイズを生み出すことなく、対応が必須なセキュリティリスクにチームが迅速かつ確実に気づけるようにするためです。