リポジトリのコンテキストは、今や攻撃対象(アタックサーフェス)である
AIコーディングのセキュリティは、単にモデルに不適切なコードを書かせないことだけではありません。
真のリスクは、エージェントがコードを書く前に「何を読み取るか」にあります。リポジトリはもはや単なるコードの置き場ではなく、AIエージェントへの入力ストリームとなっています。
リポジトリ内のあらゆるものが、エージェントを誘導するための材料になり得ます:
- 古いREADMEファイル
- 古くなった移行ノート
- 時代遅れのドキュメント
- 隠れたプロジェクトの慣習
- ローカルの指示ファイル
- 依存関係スクリプトやシェルフック
開発者はこれらのファイルを、無害なゴミとして扱うことがよくあります。しかし、AIエージェントは社会的文脈を理解しません。それが目にするのは、テキスト、ツール、そしてパターンです。ドキュメントが古かったり乱雑だったりすると、エージェントはその乱雑さを「標準」として扱ってしまいます。
不適切なコンテキストには、2つの形態があります:
- 些細なエラー:
- 古いセットアップ手順
- 非推奨のAPIを使用した例
- 古いアーキテクチャのメモ
- 敵対的攻撃:
- ファイル内のプロンプトインジェクション
- 悪意のある依存関係スクリプト
- コードを安全でないパターンへと誘導する、汚染されたサンプル
エージェントにテストの実行、ファイルの検索、プルリクエストの作成といった権限を与えると、被害の範囲(ブラスト半径)が拡大します。フックシステムはもはや単なる生産性向上ツールではなく、「自動化」そのものです。自動化として扱う必要があります。
ワークフローについて、以下の質問を自問してみてください:
- フックを編集できるのは誰か?
- エージェントはどの環境変数を見ることができるか?
- エージェントは開発者の認証情報を継承するか?
- そのツールはリポジトリの外に書き込みを行うか?
エージェントを「魔法のテキストボックス」として扱わないでください。開発インフラとして扱うべきです。
エージェント型ワークフローを保護する方法:
- スコープを絞る:3つのファイルしか必要でないなら、プロジェクト全体をエージェントに向けない。
- コンテキストを整理する:古いドキュメントや指示は削除するか修正する。
- 実行環境を強化する:リスクのあるタスクはサンドボックス内で実行する。認証情報の範囲を限定する。
- 可視性を確保する:エージェントが何を読み、どのツールを呼び出し、どのコマンドを実行したかを正確に把握する。
AIエージェントは、シェルアクセス権を持ち、タイピング速度が非常に速いジュニア開発者のようなものです。新人のジュニア開発者に、初日から本番環境のフル権限を与えることはないはずです。小さなタスク、整理されたコンテキスト、そして制限された権限を与えるはずです。
エージェントに対しても、同じように接してください。
Source: https://dev.to/hefty_69a4c2d631c9dd70724/your-repo-context-is-an-attack-surface-now-5dhj
Optional learning community: https://t.me/GyaanSetuAi