
LLM を活用したコード生成ツールの台頭は、開発者のソフトウェア開発方法を大きく変えつつあり、その過程でソフトウェアサプライチェーンに新たなリスクをもたらしています。
これらの AI コーディングアシスタントは、一般的な大規模言語モデルと同様に、幻覚を起こす傾向があります。つまり、存在しないソフトウェアパッケージを組み込んだコードを提案してしまうのです。
昨年 3 月 と 9 月 で指摘したように、セキュリティ研究者や学術研究者は、AI コードアシスタントがパッケージ名を勝手に作り出すことを発見しました。最近の研究では、商用モデルからのパッケージ提案のうち、存在しないものは約 5.2% であるのに対し、オープンソースまたは公開されているモデルからの提案は 21.7% であることが分かりました。
このコードを実行すると、存在しないパッケージをインポートする際にエラーが発生するはずです。しかし、悪意のある人物は、この幻覚を乗っ取って自分たちの利益につなげられることに気づいています。
必要なのは、幻覚的なパッケージ名で悪意のあるソフトウェアパッケージを作成し、そのパッケージをPyPIやnpmなどのパッケージレジストリまたはインデックスにアップロードして配布することだけです。その後、AIコードアシスタントが盗用した名前を再び幻覚させると、依存関係のインストールとコード実行のプロセスによってマルウェアが実行されます。
この再発は二峰性のパターンを示しているようです。幻覚された名前の中には、プロンプトを再実行した際に繰り返し表示されるものもあれば、完全に消えてしまうものもあります。これは、特定のプロンプトが確実に同じ幻覚パッケージを生成することを示唆しています。
セキュリティ企業Socketが最近指摘したように、昨年このテーマを調査した学術研究者たちは、同じ幻覚誘発プロンプトを10回再実行したところ、幻覚されたパッケージの43%が毎回繰り返され、39%は再び現れなかったことを発見しました。
幻覚されたパッケージ名を悪用することは、一般的な用語のバリエーションやスペルミスを用いて人々を欺くタイポスク ワッティングの一種です。Python Software Foundationのセキュリティ開発者であるSeth Michael Larson氏は、これを「スロップスクワッティング」と呼んでいます。「slop」はAIモデルの出力に対する一般的な蔑称です。
「この問題をエコシステムレベルで検討し始めたのは、まだ初期段階です」とラーソン氏はThe Register紙に語った。「LLMプロバイダーの透明性が向上しなければ、LLMの錯覚によってどれだけのインストール試行が発生しているかを定量化することは困難であり、おそらく不可能でしょう。LLMが生成したコード、パッケージ、そして情報を利用するユーザーは、その情報を実際に運用する前に、LLMの出力を実際のものと照らし合わせて二重に確認する必要があります。そうしないと、現実世界で重大な結果を招く可能性があります。」
ラーソン氏によると、開発者が存在しないパッケージをインストールしようとする理由は数多くあり、パッケージ名の入力ミス、内部パッケージがパブリックインデックスに既に存在するかどうかを確認せずに誤ってインストールする(依存関係の混乱)、パッケージ名とモジュール名が異なるなどが挙げられる。
「開発者のコードの書き方は大きく変化しています」と、セキュリティ企業SocketのCEO、フェロス・アブカディジェ氏はThe Register紙に語った。 AIツールが多くの開発者にとってデフォルトのアシスタントになりつつある今、「バイブコーディング」が頻繁に発生しています。開発者はAIに指示を出し、提案をコピーして、そのまま作業を進めます。あるいは、AIエージェントが推奨パッケージを勝手にイン ストールしてしまうこともあります。
問題は、こうしたコード提案には、実在するように聞こえるが実際には存在しない、幻覚的なパッケージ名が含まれていることが多いことです。
「問題は、こうしたコード提案には、実在するように聞こえるが実際には存在しない、幻覚的なパッケージ名が含まれていることが多いことです。私は実際にこれを目にしたことがあります。ターミナルに貼り付けるとインストールに失敗します。あるいはもっとひどいことに、誰かがそのパッケージ名を勝手に使用しているため、インストールに失敗しないこともあります。」
アブカディジェ氏によると、こうした偽パッケージは非常に本物らしく見えることがあるそうです。
「調査すると、本物らしく見えるREADMEや偽のGitHubリポジトリ、さらにはパッケージを本物らしく見せかける怪しいブログまで見つかることがあります」と彼は述べ、Socketのセキュリティスキャンはコードの動作を分析するため、こうしたパッケージを検出できると付け加えました。
なんとも奇妙な世界です。AIが作り出したパッケージが、役に立ちたくてうずうずしている別のAIによって検証され、承認されてしまうのです。
「さらに悪いことに、こうした勝手に使用されたパッケージ名をGoogleで検索すると、Google自身が生成したAIによる要約が表示されることがよくあります。その要約では、パッケージが便利で安定していて、メンテナンスが行き届いていると自信満々に称賛されています。しかし、それはパッケージのREADMEをそのまま繰り返しているだけで、懐疑的な視点も文脈 もありません。」急いでいる開発者にとっては、これは偽りの正当性を与えてしまう。
「私たちは、AIが作り出したパッケージが、役に立ちたがり屋の別のAIによって検証され、承認されるという、なんとも奇妙な世界に生きているのだ。」
Aboukhadijeh氏は、1月に発生したインシデントを指摘した。このインシデントでは、検索クエリにAI生成テキストで応答するGoogleのAI Overviewが、正規のパッケージasync-mutexをタイポスクワッティングする悪意のあるnpmパッケージ@async-mutex/mutexを提案した。
また、彼は最近、「_Iain」という名前を使用する脅威アクターが、ダークウェブフォーラムで悪意のあるnpmパッケージを用いてブロックチェーンベースのボットネットを構築する方法を詳述したプレイブックを公開したと指摘した。
Aboukhadijeh氏は、_Iain氏が「数千ものタイポスクワットパッケージ(多くは暗号ライブラリを標的としたもの)の作成を自動化し、ChatGPTを用いて実際のパッケージ名に似たようなバリエーションを大規模に生成した」と説明しました。彼は、パッケージの公開から感染マシン上でGUI経由でペイロードを実行するまでのプロセスを解説するビデオチュートリアルを公開しました。これは、攻撃者がAIを武器としてソフトウェアサプライチェーン攻撃を加速させている明確な例です。」
Larson氏は、Python Software Foundationはパッケージの悪用をより困難にするために絶えず取り組んでおり、そのような作業には時間とリソースが必要であると付け加えました。
「Alpha-Omegaは、PyPIの安 全性とセキュリティに関するエンジニアであるMike Fiedler氏の取り組みを支援し、マルウェアを報告するためのプログラムAPIの実装、既存のマルウェア報告チームとの連携、主要プロジェクトにおけるタイポスクワットの検出強化などを通じて、PyPIにおけるマルウェアのリスク軽減に取り組んでいます」とLarson氏は述べました。
PyPIやパッケージマネージャーのユーザーは、インストールするパッケージが既存の既知のパッケージであること、名前に誤字がないこと、そしてパッケージの内容がインストール前にレビューされていることを確認する必要があります。さらに良い方法としては、組織がPyPIのサブセットを自社内でミラーリングすることで、開発者が利用できるパッケージをより細かく制御できるということです。®