AIエージェントに渡す前の外部リポジトリ安全確認
POINT
- 偽の採用課題には、OSを判別して外部サーバーからスクリプトを取得し、バックグラウンドで実行するGit Hookが含まれていた。
- 外部リポジトリをAIコーディングエージェントに渡すと、コードだけでなくHooks、エディタ設定、Skillsの指示も実行範囲に入り得る。
- 展開前、依存関係の導入前、エージェントに渡す前の3段階で確認する。
外部リポジトリは、読む前に実行経路を確かめる
採用課題、検証用リポジトリ、公開されたSkillsをAIエージェントに読ませ、設計や実装を始める機会は増えています。ただし、外部コードはアプリケーション本体だけで動くわけではありません。Git操作、依存関係の導入、エディタでのフォルダー展開に連動する設定も含まれます。
報告された偽のPython開発者向け採用課題には、FastAPIとSQLAlchemyを使うバックエンド、Gitリポジトリ、手順書PDFが同梱されていました。見慣れた開発課題の体裁そのものが入口になります。
Git Hookとエディタ設定に隠れる実行処理
当該リポジトリの.git/hooks/pre-commitはOSを判別し、45.61.164.38からOS別スクリプトを取得してバックグラウンド実行する内容でした。Linux向けでは、取得したtokenlinux.nplを~/Documentsに置き、tokenlinux.shへ改名して実行権限を付与し、nohupで起動していました。
続いてparser.jsとpackage.jsonを取得し、Node.jsの依存パッケージを導入して実行します。見覚えのない外部IPへの接続、ダウンロード、権限変更、常駐化が一続きなら、作業を止めるべきです。別例では、ZIP内の.vscodeに、VSCodeでディレクトリを開いた際に実行されるコマンドが設定されていました。
AIエージェントに渡す前の確認手順
まずは隔離したディレクトリで展開し、実行せずにファイル一覧を確認します。.git、.git/hooks、.vscode、CI設定、パッケージ管理ファイル、Skillsやエージェント向け指示ファイルを先に読みます。
- 外部URL、IPアドレス、
curl、wget、PowerShell、nohupを検索する。 install、prepare、pre-commitなど、導入やGit操作に連動する処理を確認する。- 追加される依存関係と、導入後に起動されるスクリプトを分けて読む。
- Skillsが秘密情報の探索、外部送信、無条件のコマンド実行を求めていないか確認する。
- エージェントには確認済みのファイルだけを渡し、ネットワーク利用とシェル実行を必要最小限に絞る。
当該事例では、エンドポイントへのリクエストに含まれるidを変えると、異なるスクリプトが返りました。取得時点で読めた内容だけを、安全性の根拠にしない姿勢が必要です。
導入を止める条件と、隔離して調べる条件
出所を確認できない採用課題やDM経由のZIPは、本番端末で開かないことが原則です。提出期限を理由に即時実行を促すもの、外部から取得するスクリプトを含むもの、リポジトリ外の認証情報を求めるものは、導入対象から外す判断が妥当です。
業務上どうしても調査が必要なら、ネットワーク、認証情報、SSH鍵、クラウド権限を切り離した環境で静的確認から始めます。AIエージェントにはコード要約や差分レビューを担わせても、取得・実行・送信の許可を一括で渡してはいけません。
まとめ
外部リポジトリの確認は、脆弱性スキャンの後ではなく展開前に始まります。AI駆動開発では、「何を読ませるか」だけでなく、「何を実行・取得・送信させないか」を先に決めることが安全な自動化の境界になります。