AIコードアシスタントは存在しないパッケージ名を生成しており、攻撃者はそれらのハルシネーションを現実のサプライチェーンリスクへと変貌させています。
Lasso Securityのセキュリティ研究者であるBar Lanyado氏が、AI駆動のコーディングツールにPythonクライアントを求めた際、モデルは huggingface-cli のインストールを提案しました。しかし、このパッケージは架空のものです。正当なライブラリは huggingface_hub という名前で存在しています。この危険性を証明するため、Lanyado氏はPython Package Index (PyPI) にこの偽の名前を空のプレースホルダーとして登録しました。すると、わずか3か月以内に、そのプレースホルダーは 3万回以上のダウンロード を記録し、公開ドキュメントに登場し、さらにはAlibabaのリポジトリから収集されたコードサンプルの中にまで現れたのです。
架空のパッケージがいかにして現実の脅威となるか
- プロンプト → ハルシネーション – 開発者がAIに助けを求めます。ノイズの多いインターネットデータで学習されたモデルは、もっともらしく聞こえるパッケージ名を捏造します。
- コピー&ペースト → ドキュメント化 – その提案がREADME、Stack Overflowの回答、あるいは社内Wikiに記載されます。一度書き込まれると、その名前はコミュニティ全体に広がります。
- コードへの組み込み – AIを信頼した開発者が、その名前を要件ファイル(requirements file)に追加し、本番環境へとプッシュします。
既存の防御策がなぜこの問題を見逃してしまうのか
静的解析ツールや脆弱性スキャナーは、既知のCVEやリリース履歴のあるライブラリを探します。AIの提案が行われる前にダウンロード数がゼロの状態で新しく公開されたパッケージには、CVEもレピュテーション(評判)もなく、そのため「クリーン」であると判断されてしまいます。標準的な「そのバージョンに脆弱性はあるか?」というチェックは「false(なし)」を返し、開発者に誤った安心感を与えてしまいます。
この実験が証明していること
- AIが捏造した名前が本番環境に到達する – 3万回以上のダウンロード という数字は、開発者が実際にこれらの架空のパッケージをプルしていることを示しています。
- ハルシネーションがドキュメント化される – 偽の名前が一度公開ガイドに登場すると、それは永続的に残り続け、エラーを拡散させる可能性があります。
- 登録は極めて容易である – PyPIにパッケージを公開するのに費用はかからず、数分で完了します。これがサプライチェーン悪用の障壁を低くしています。
実際に効果のある防御策
- すべての依存関係を検証する – 新しい要件を追加する前に、パッケージインデックスを検索し、その名前が既存の文書化されたライブラリと一致することを確認してください。
- 公式ソースと照合する – 提案された名前を、ベンダーのリポジトリや公式のインストールガイドと比較してください。
- 利用者の少ない新しいパッケージをハイリスクとして扱う – ダウンロード数が極めて少ない、あるいはリリースされたばかりの依存関係については、手動レビューの対象としてフラグを立ててください。
今後の注視すべき点
教訓は単純です。AIの提案は保証ではありません。すべての新しい依存関係を未検証のサードパーティ製コンポーネントとして扱い、その出所を検証してください。架空のパッケージが本番環境に紛れ込む前に、サプライチェーンを監視し続けることが重要です。
