コード全体を読ませないAI脆弱性診断はどこまで使えるか, ゼロコンテキスト運用の現実解
QiitaやZennでは, 「コードをほとんど読ませずに脆弱性を高精度で見つける」系の議論が急速に増えています。機密性重視の現場ほど魅力的に見えるテーマですが, そのまま本番統制へ組み込むのは危険です。
結論を先に言うと, ゼロコンテキスト型AI診断は一次トリアージとして有効です。一方で, 最終判定系の役割を単独で持たせるべきではありません。
なぜ注目されるのか
ゼロコンテキスト手法には, 現場が欲しいメリットがあります。
- コード持ち出し範囲を最小化できる
- 前処理コストが低く高速に回せる
- リポジトリ追加時の初期導入が軽い
特に規制産業では「見せるデータを減らす」発想が強いため, 採用圧力が高くなります。
しかし脆弱性は文脈依存が多い
現実の脆弱性は, 断片だけでは判定できません。
- 信頼境界はシステム設計全体で決まる
- 入力検証の妥当性は呼び出し連鎖で変わる
- 認証/認可は複数サービス横断で成立する
局所パターン検出はできても, 悪用可能性や事業影響はコンテキストがないと誤りやすいのです。
実務での位置づけ, 判定ではなく選別
運用は3段階に分けるのが安全です。
- 高速検知層: ゼロコンテキストで候補抽出
- 文脈検証層: 該当箇所周辺と依存関係を精査
- 最終判断層: セキュリティ担当がリスク確定
これにより, 速度を維持しつつ誤判定のコストを抑えられます。
導入前評価プロトコル
本番投入前に, 既知の社内インシデントや再現可能なテストデータで必ず検証します。
- 脆弱性種別ごとの適合率/再現率
- 悪用可能性判定の誤り率
- 既存SASTとの差分
- 難読化コードやプロンプト誘導への耐性
- チームが処理可能な誤検知量か
誤検知が多すぎると, 開発側は数週間で警告を無視し始めます。
ガバナンス要件
- AI検知結果のみでマージ停止しない
- 重大度と確信度を分離して表示
- 根拠リンクと再現手順を保存
- 高重大度かつ低確信度ケースのエスカレーション先を明確化
監査で問われるのは「AIが言ったこと」ではなく, 「誰がどの根拠で判断したか」です。
データ露出を下げる現実的手段
「文脈を完全に切る」より, 次の技術制御のほうが効果的です。
- シークレットと識別子のトークンレベルマスキング
- リージョン固定の専用推論エンドポイント
- 短命な暗号化コンテキスト
- データ区分に応じた文脈深度制御
これなら精度を極端に落とさず, 露出リスクを下げられます。
60日導入モデル
- 1〜15日: 脆弱性分類と受入基準を定義
- 16〜30日: ベンチマークで既存ツールと比較
- 31〜45日: 非クリティカル領域でシャドー運用
- 46〜60日: チケット連携と人手トリアージへ接続
まとめ
ゼロコンテキスト型AI診断は, 速い検知器としては有用です。ただし単独の判定器にすると, 誤検知と見逃しの両方で運用が破綻しやすくなります。
最適解は, 高速AIトリアージ + 文脈検証 + 人間の最終責任という層構造です。
関連文脈: Qiita Popular Items / Zenn