AIが生成する「存在しない」パッケージがサプライチェーン攻撃に悪用される可能性

セキュリティニュース

投稿日時: 更新日時:

AIが生成する存在しないパッケージがサプライチェーン攻撃に悪用される可能性

近年、ChatGPTをはじめとしたコード生成機能を持つ大規模言語モデル(LLM)が、プログラミング支援の現場に急速に普及しています。開発者は簡単なプロンプトから高品質なコードを得ることができ、生産性向上や学習用途において多くの利点が語られてきました。

しかし、米国テキサス大学サンアントニオ校やオクラホマ大学、バージニア工科大学の研究者らによる最新の研究「We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs」では、これらのAIツールがもたらす存在しないパッケージ「スロップ スクワッティング」が新しいソフトウェア・サプライチェーン攻撃に悪用される可能性を指摘しました。

スロップ スクワッティングとは

スロップスクワッティングはAndrew Nesbitt氏が作成した造語で、

人気のあるライブラリに酷似した名前を使用して開発者を騙し、悪質なパッケージをインストールさせる攻撃手法であるタイポスクワッティングをアレンジして命名されました。

脅威アクターはLLMモデルのコーディングで利用されるPyPIやnpmなどのインデックスへアイクあるパッケージを作成する可能性があります。

存在しないパッケージ:パッケージ幻覚

「パッケージ幻覚」とは、LLMがコードを生成する際、実際には存在しないライブラリやパッケージをimport文などで参照してしまう現象です。たとえばPythonで以下のようなコードをLLMが生成したとします。

import securelogin

この「securelogin」は現実にはPyPI上に存在しない架空のパッケージです。

にもかかわらず、LLMはあたかも実在するかのように提示してしまいます。このような幻覚パッケージの出力は、開発者やツールによって自動的にインストールされる危険性があり、そこを狙ったサプライチェーン攻撃の温床になりかねません。

存在しない推奨パッケージが発生

論文によると、調査されたケース (生成された 576,000 件の Python および JavaScript コード サンプル) の約 20% で、推奨パッケージが存在しなかったことが示されています。

CodeLlama、DeepSeek、WizardCoder、Mistral などのオープンソース LLM では状況はさらに悪く、ChatGPT-4 などの商用ツールでも依然として約 5% の割合で幻覚パッケージが発生しており、これは顕著です。

AIが生成した存在しないパッケージ

画像:We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs

有名なパッケージに似た幻想パッケージが発生

また、研究で記録された幻覚的なパッケージ名の数は 20 万件を超え、そのうち 43% は同様のプロンプトで繰り返し現れ、58% は 10 回の実行中に少なくとも 1 回は再出現しました。

これらの幻覚的なパッケージ名のうち 38% は実際のパッケージからヒントを得たもので、13% はタイプミスによるもので、残りの 51% は完全に捏造されたものであることがわかりました

さらに、幻覚として生成されたパッケージ名の多くは、既存の有名パッケージに類似した名前であることも判明しました。

たとえば「scikitlearn」の代わりに「scikitlearn」、「tensorflow」の代わりに「tensorlogin」などが例として挙げられます。これは、ユーザーの警戒心を緩め、マルウェアの導入を容易にする狙いがあると考えられます。

なぜパッケージ幻覚は危険なのか?

パッケージ幻覚は単なる「間違った出力」では済まされません。
幻覚として生成されたパッケージ名が実際には未登録である場合、攻撃者がその名前を用いてPyPIやnpmなどに悪意のあるパッケージを登録することが可能です。これにより、開発者が無意識のうちにマルウェアをインストールするリスクが生じます。

現代の開発環境では、依存パッケージのインストールやビルドが自動化されているため、LLMによるコードの誤出力がそのままプロジェクトに取り込まれてしまう可能性があります。

多くのセキュリティ対策は既存のマルウェアや不正アクセスを前提としていますが、パッケージ幻覚は“存在しないものを信じ込ませる”という根本的に異なる脅威であり、既存の静的解析や署名検証では容易に検出できません。

防止策はあるのか?

現状はこのパッケージ幻覚が悪用された形跡は確認されていませんが、

研究チームは以下のような対策を推奨しています。

  • LLM出力の監視・フィルタリング
    コード生成前後にパッケージ名をチェックし、公式リポジトリと照合する

  • パッケージレジストリの保護強化
    PyPIやnpmにおける「未使用パッケージ名の保護」や「事前登録機能」の導入

  • 開発者への注意喚起
    LLMの出力が誤っている可能性があることを常に意識させる教育とトレーニング

  • Verified Publisher制度の活用
    信頼できる発行者によるパッケージ以外は使用しない開発方針の徹底