自動トリアージ
機能概要
「Takumi」は Slack や WebUI を通じて手動で仕事を依頼できるだけでなく、イベント駆動でレビューを行う機能も提供しています。
Takumi は開発ワークフローのイベントを監視し、セキュリティ上のリスクを含む可能性のあるプルリクエストを自動的にトリアージします。手動レビューの負担を軽減し、本当に対処すべき問題にチームが集中できるようにします。
現在は Dependabot 自動トリアージ に対応しています。Dependabot が作成したプルリクエストを自動で精査し、セキュリティ的な観点から安全かどうかを判断します。
設計思想
本機能は「脆弱性を見逃さない」ことを最優先に開発されています。そのため、安全な更新についても「問題がある可能性がある」と報告する場合があります。
理由として、重大な脆弱性の見逃しはセキュリティインシデントに直結する可能性を高め、その対応コストは誤検知を確認するコストを大幅に上回るためです。
Takumi の分析は、公開されている脆弱性情報と、お客様のソースコードを読み解くホワイトボックス検証などを組み合わせた独自のアプローチに基づいています。
しかしながら、このアプローチには制約も存在し ます。例として、公開されている情報は時として、脆弱性の具体的な説明が乏しい場合や、その脆弱性を再現する方法などが不足している場合があります。
このような制約があるからこそ、Takumi は偽陰性(実際の脅威の見逃し)を最小限に抑えることに注力しています。言い換えると、偽陽性を許容していると言えます。
その結果、偽陽性(ノイズとなりうる場合)を許容している側面もありますが、より精度の高い分析を実現するため、日々継続的な研究開発に取り組んでいます。
Dependabot 自動トリアージ
GitHub で Dependabot が有効化されている場合に、Dependabot が作成したプルリクエスト(PR)を自動で精査し、セキュリティ的な観点から安全かどうかを判断します。
継続的な依存関係の更新はセキュリティの向上に役立ちますが、大量に生成された PR を一つ一つ手動で確認し、セキュリティリスクがないかを分析することは大きな負担となります。Takumi は、人間の代わりに自動的かつ迅速にセキュリティ分析を行い、リスクを検知・判断することで、この課題を解決します。
実行フロー
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 が特定の脆弱性に関連し、悪用可能と判断された場合のメッセージ例です。
