/security-reviewはリポジトリを対象に、注入、XSS、安全でないデータ処理、path traversal、弱い暗号等の高確度所見を提示する。修正案と再検証まで会話で進められるが、検出範囲と再現性は静的解析や依存関係スキャンと異なる。単独の合否ゲートにしてはいけない。
何が変わったか
GitHub Copilot appのpublic previewで/security-reviewコマンドが利用可能になり、脆弱性候補の説明、修正提案、再検証を行えるようになった
| 項目 | 内容 |
|---|---|
| 対象 | GitHub Copilot |
| API・機能 | Copilot app /security-review |
| 変更種別 | セキュリティ |
| 重要度 | 高 |
| 対応期限 | 期限なし |
変更前後の差
従来はCopilotへ個別にコードを説明させるか、CodeQL、Dependabot、secret scanning等を別画面で確認していた。新コマンドはセキュリティレビューを一つの対話へまとめ、severityとconfidenceを付け、修正後の再確認を支援する。
誰に影響するか
レビュー待ちPR、既存リポジトリの棚卸し、短期間のセキュリティ確認に影響する。機密コードへCopilot appを許可する組織は、利用ポリシー、リポジトリアクセス、ログ、提案適用権限を確認する必要がある。
期限
public previewであり、強制移行期限はない。既存の必須チェックを外さず、補助レビューとして試す。
必要な対応
実行対象branchとcommit SHAを記録し、所見ごとに再現手順、影響範囲、既存scannerの結果を照合する。自動修正を直接mainへ適用せず、テストと人手レビューを通す。未検出を安全の証明として扱わない。
実装・移行手順
- 代表的な脆弱性を含む検証repositoryで検出範囲を確認する
- 実行時のbranchとcommitを記録する
- 所見をCodeQL・Dependabot・secret scanningと突合する
- 修正案を専用branchへ適用する
- 単体・統合・セキュリティテストを実行する
- 再検証結果と人手判断をレビュー記録へ残す
失敗しやすい点
結果が0件なら安全と結論する、提案差分を無審査でmergeする、対象commitを記録しない、既存scannerを無効化する、confidenceだけで重大度を決めることが失敗につながる。
リスク
偽陰性、偽陽性、不完全な修正、可用性低下、プレビュー仕様変更、機密コードへのアクセス拡大がある。
評価方法
- 既存scannerと一致した所見率
- 人手確認後の有効所見率
- 修正案のテスト失敗率
- 再検証で解消した割合
- レビュー所要時間
- 見逃しが後日判明した件数
ロールバック
Copilot appでのsecurity review利用を停止し、Code scanning等の既存パイプラインだけへ戻す。提案差分は通常のGit revertまたはbranch破棄で戻す。
編集部分析
価値はscannerの置換ではなく、所見の説明と修正反復を短縮する点にある。検出器、説明者、修正者を同じAIへ委ねるため、独立した検証手段を残すことが重要である。
実務チェックリスト
- [ ] 対象commitを記録した
- [ ] 既存scannerを維持した
- [ ] 所見を再現した
- [ ] 修正を専用branchで試した
- [ ] 人手承認を通した
- [ ] 0件を安全証明にしていない