CodeRabbitはAIコードレビューを軸に、Agentic Change Managementを提供します。AIコーディングエージェントが生成する大量のコードに対して、理解負債の解消、優先順位付け、そしてセキュアな状態を維持します。
PRをマージすることで、変更された行以外の部分まで影響を及ぶことがあります。そうした思いもかけない場所で起こる不具合を防ぐべくリリースされたのがSecurity Blast Radiusです。
Security Blast Radiusとは
Security Blast Radiusをそのまま翻訳すると、セキュリティの爆発範囲になります。PR内の変更行が、それ以外の部分にも影響を与える可能性があるか調査するのに利用します。
File security-blast-radius-overview.jpg.avif
表示すると、変更されたコンポーネントと、使用する依存関係、影響を受ける可能性がある範囲やテスト、サポートするリポジトリのコンテキストが表示されます。
グラフが示す情報
| グラフ要素 | 意味 |
|---|---|
| 変更されたコンポーネント | PRによって変更されたコンポーネント、サービス、API、ワーカー、設定インタフェース、その他のコード概念など |
| 上流の依存関係 | 変更されたコンポーネントが使用するコードまたはインフラ |
| 下流のコンシューマ | 変更された動作に依存し、その影響を受ける可能性のあるコード |
| テストカバレッジ | 変更された動作やその周辺のパスを検証する関連テスト |
| 補足情報 | 直接的な下流への影響を確立することなく、変化を説明するのに役立つリポジトリの証拠 |
| 関係 | 呼び出し、インポート、依存関係、読み取り、書き込み、公開、購読、テスト関係などの証拠に基づいた接続 |
利用法
Security Blast Radiusは、CodeRabbit Security Agentに付属する機能になります。利用する際にはCodeRabbit Change Stack(AIコーディング時代のPR用UI)を通して利用します。
Change Stackで、 Security Blast Radius をクリックします。
マップの中央にある変更されたコンポーネントを起点として、上流と下流、テスト、サポート関係と辿れます。
最初、関連コンポーネントは折りたたまれた状態になっているので、選択して開いてください。または、 Expand all をクリックして全展開できます。
コンポーネントを選択すると、そのコンポーネントがPRにとって重要な理由が表示されます。また、2つのコンポーネント間の接続を選択すると、関係の種類や信頼度、概要などが表示されます。これはあくまでも関係性を表示しているだけで、PR内に欠陥や脆弱性が含まれることを意味しないので注意してください。
### 注意
Potentially impacted とラベル付けされているコンポーネントは、PRの差分外にある可能性があります。修正によって、影響が及ぶ可能性があり、調査する価値があります。こちらもまた、欠陥があるという意味ではありません。
検査方法
Security Blast Radiusでは2つの検査が用意されています。
- コンポーネント
コンポーネントを選択すると、その詳細が表示されます。該当PRにとって、そのコンポーネントがなぜ重要なのか説明されます。関連範囲としてリポジトリのパスや行の位置、概要などが表示され、選択すると該当部分のソースが表示されます。 - 関連性
2つのコンポーネント間の接続を選択すると、関連の種類や信頼度、概要、サポート範囲などが表示されます。また、その証拠としてコードのスニペットや影響を受けるコードなども提示されます。
セキュリティ検出との組み合わせ
Security Blast Radiusは、依存関係を可視化するだけの機能ではありません。セキュリティアーキテクチャレビューで検出された指摘事項と、グラフ上のコンポーネントを関連付けて確認できます。
セキュリティを選択すると、指摘事項に関連するコンポーネントや経路がハイライトされます。個別の指摘を選択すれば、その指摘に関係する範囲だけに絞って確認することもできます。
これによって、どこに問題があるかだけでなく、その問題がどのコンポーネントを経由し、どこまで関係する可能性があるかをPR単位で追いやすくなります。
ただ、グラフ上でコンポーネント同士が接続されていること自体が、脆弱性があると意味する訳ではありません。Security Blast Radiusは、すでに存在するセキュリティ上の指摘と、コード上での関係性を重ね合わせて表示するものです。
表示されない場合もあります
Security Blast Radiusは、CodeRabbitがレビュー時に確認できた証拠をもとにグラフを構築します。情報が不足している部分について、推測で依存関係を補完することはありません。
そのため No material blast radius と表示された場合も、影響範囲が絶対に存在しないという意味ではありません。確認できた証拠の範囲では、PRの変更箇所以外に大きな影響経路を確立できなかった、という意味になります。
同様に、グラフ上にコンポーネントや関係が表示されていない場合も、その関係が存在しないことを証明しません。あくまで、そのレビューで利用できた証拠から関係を確立できなかったと理解する必要があります。
PRレビューへの影響
通常の差分レビューでは、どうしても「変更されたコード」が中心になります。しかし、実際の変更では、そのコードを呼び出している別のサービスやAPI、データを読み書きする処理、イベントのPublish/Subscribe、関連テストなどまで確認する必要があります。
Security Blast Radiusでは、変更箇所を起点にそうした関係をグラフとして辿れます。そのためレビュー担当者は、Diffだけを読みながら頭の中で依存関係を組み立てるのではなく、影響を受ける可能性がある場所を候補として確認できます。
特に大きなPRや、複数のサービスやコンポーネントをまたぐ変更では、「変更されたコードを理解する」ことと「変更による影響範囲を理解する」ことは別の作業です。Security Blast Radiusは、後者を支援するための機能と捉えると分かりやすいでしょう。
まとめ
Change Stackには、変更を理解するための複数のビューがあります。そして、それぞれの役割は以下のようになります。
- Layers
変更されたコードをどの順番で読むか - Security Blast Radius
その変更が何とつながり、どこへ影響する可能性があるか - Architecture Impact
システム上の責務やアーキテクチャ上の関係がどう変わったか
つまりSecurity Blast Radiusは、差分表示の代わりとなるものではありません。差分だけでは見えにくいPRの外側まで視点を広げ、レビュー時に追加で確認すべき場所を見つけるための情報をマップ形式で表示します。
AIコーディングエージェントによって変更量が増えていくほど、コードを生成すること以上に、その変更が既存システムへ与える影響を理解することが重要になります。Security Blast Radiusは、その影響範囲をPRの段階で確認するための機能になります。
