スロップスクワッティングを支えるAIエコシステムの危険性

LLMを活用したコード生成ツール(コード生成AI)は現在、多くの開発者や企業によって導入されている。それはソフトウェア開発に多くのメリットをもたらしている反面、セキュリティ上のリスクや著作権上の問題、確認や修正にかかる手間など、多くのデメリットももたらすことが指摘されている。
特に興味深いセキュリティ上のリスクとしては、LLM特有のハルシネーションを利用したサプライチェーン攻撃の存在が知られている。英国のITメディア「The Register」は2025年4月12日、このサプライチェーン攻撃の問題に関する新たな情報を掲載した。
AI code suggestions sabotage software supply chain ・ The Register
https://www.theregister.com/2025/04/12/ai_code_suggestions_sabotage_supply_chain/
同誌は過去にも同じ問題について警鐘を鳴らしてきたが、今回で三回目となる最新の記事には「このサプライチェーン攻撃を加速させるために用いられているAI」と、「悪意あるパッケージに信憑性を与えてしまうAI」の興味深い話題が紹介されている。
スロップスクワッティング(slopsquatting)とは
AIに質問をしたとき、実在しない人名や地名、映画や本のタイトルなどを交えて自信満々に回答されることは珍しくない。その架空のタイトルが「もっともらしいが雑に感じられる名前」なので笑ってしまった経験のある人も多いだろう。このハルシネーションと呼ばれる現象は、LLMを利用するコード生成AIでも同様に起こる。つまり「実在しないパッケージの名前」を組み込んだコードが生成されてしまうことがある。
テキサス大、オクラホマ大、バージニア工科大の研究者チームは2024年、コード生成AIに利用される16種類のLLMを使って「ハルシネーションで生成される架空のパッケージ名」を調査した。彼らがJavaScript(npm)とPython(PyPI)の約57万6000件のコードサンプルを生成したところ、商用モデルのLLMで平均5.2%以上、オープンソースのモデルでは平均21.7%が「幻覚のパッケージ名」を生成した。ここで記録された架空のパッケージ名は計20万5474件という、かなり驚異的な数字となっている。
もちろん通常であれば、架空のパッケージをインポートしようとしてもエラーが起こるだけだ。しかし、この状況を狙った攻撃者は「架空のパッケージを実際に作る」という手法でサプライチェーン攻撃を行うことができる。
つまり攻撃者は、AIが幻覚で生み出すパッケージ名と同名の悪意あるパッケージを作成し、PyPIやnpmなどのパッケージリポジトリに登録することができる。ハルシネーションを起こしたコード生成AIが、ふたたび同じ架空のパッケージ名を組み込むと、開発者は(あるいは自動化されたエージェントは)、攻撃者が登録しておいたパッケージを疑いもせずインストールしてしまう。
これはタイポスクワッティング(タイプミスやスペルミスを利用した攻撃)の一種だが、狙われるのは人間のミスではなく、AIがハルシネーションで生成する「スロップ(※)」であるため、このような攻撃はスロップスクワッティング(slopsquatting)とも呼ばれている。
※「スロップ」という言葉は、AIのぞんざいな出力を侮蔑する場面で頻繁に用いられている。ちなみにスロップスクワッティングはPython Software Foundationのセキュリティ開発者Seth Michael Larsonによる命名。
過去に行われた概念実証
AIに特化したセキュリティ企業「Lasso Security」の研究者Bar Lanyadoは、この攻撃手法で実際にマルウェアの配布ができるのかどうかを調査し、それを2024年に発表していた。AIが何度も架空のパッケージ名「huggingface-cli」(実在する真っ当なパッケージ『huggingface_hub[cli]』に酷似した名前)を示す様子を見た彼は2023年12月、概念実証用の無害なマルウェア拡散パッケージ「huggingface-cli」を作成した。彼がさっそくPyPIに登録したところ、それは3か月の間に1万5000回以上ダウンロードされてしまった。
またLanyadoは、AIがどの程度「架空のパッケージ名を繰り返し提案するか」も調査している。彼は4つのAIモデルに「このようなプログラミングを実現したい」というリクエストを大量に投げかけ、AIが返答するパッケージ名を記録した。その結果、AIはかなりの高頻度で同じ架空のパッケージ名を繰り返し提案することが判明している。
AIの幻想を悪用するAI、その悪事を承認するAI
そして今回のThe Registerの記事によると、現在ダークウェブでは「正規のパッケージに似せた名前のパッケージをAIで自動生成する」という手法が出回っている。ここでは「_Iain」を名乗る人物が、ChatGPTを用いて実在のパッケージ名に似せた数千件のパッケージを自動生成し、ブロックチェーンベースのボットネットを構築するという攻撃手法を公開しており、ご丁寧にもパッケージの公開からペイロードを実行するまでのプロセスをビデオチュートリアルにして提供しているという。
コード生成AIの台頭により、ますます多くのソフトウェア開発者が、AIの提案するコードをそのままコピーしたり、AIエージェントにパッケージをインストールさせたりしている。その一方で「コード生成AIが引き起こすハルシネーション」を悪用する攻撃者たちは「AIによる大量の自動生成」でスロップスクワッティングを加速させているということになる。さらに面白いのが、セキュリティ企業SocketのCEO、Feross Aboukhadijehによる解説だ。The Registerの取材に対して、彼はこのように語っている。
「(スロップスクワッティングのパッケージについて)調査すると、本物そっくりのREADMEや偽のGitHubリポジトリ、さらにはパッケージを本物らしく見せかけるための怪しいブログまで見つかることがある」
「さらに悪いことに、このようなスロップスクワッティングのパッケージ名をGoogleで検索すると『GoogleのAIによる概要』が表示されることも多い。そのパッケージは便利である、安定している、メンテナンスが行き届いているなど、自信満々に称賛する内容の解説だ。それはパッケージのREADMEをそのまま繰り返しているだけで、懐疑的な視点も文脈もない。時間のない開発者にとっては、誤った正当性を与えてしまうことになる」
つまりAIはスロップスクワッティングの武器に用いられているだけではなく、それに引っかかりかけているユーザーに向けて、間違った太鼓判まで押してしまうということになる。しかもGoogleが生成する概要(AI Overview)の場合、攻撃者が悪意を持ってAIを利用しているわけではない。なんら悪意を持たないAIが、自身の「何でも教えたがる性質」「自信たっぷりに回答したがる性質」に従って、ただ自動的に質問者へ回答を出力しているだけだ。
実際のところGoogleのAI Overviewは2025年1月、悪意あるnpmパッケージ「@async-mutex/mutex」を真っ当なパッケージであるかのように提案してしまったことが報告されている。この@async-mutex/mutexは正規のパッケージ「async-mutex」を模倣したマルウェアで、秘密鍵を盗むためのコードが仕込まれており、被害者がインストールすると秘密鍵がGmail経由で攻撃者に送信される。この攻撃では@async-mutex/mutex以外にも「solana-transaction-toolkit」「solana-stable-web-huks」など別名のパッケージも用意されていた。これらの二つは被害者の秘密鍵を奪うだけでなく、自動的にウォレットから最大98%の資金を攻撃者のSolanaアドレスに送金する機能も備えていた。
このような現状について、Aboukhadijehは次のようにコメントしている。
「AIで作り出されたパッケージが、役に立ちたくてたまらない別のAIによって検証され、承認されてしまう。我々は、なんと奇妙な世界に生きているのだろう」
追記:
ちなみに「Socketのセキュリティスキャンはコードの動作を分析するため、こうした悪質なパッケージを検出できる」とAboukhadijehは付け加えている。またPython Software Foundation(PSF)も、PyPI上でのマルウェア流通を防ぐため、APIによるマルウェア報告や、タイポスクワッティング検出機能の強化などを進めているという。
参考:
CodeMirage_ Hallucinations in Code Generated by Large Language Models
https://arxiv.org/html/2408.08333v1
We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs
https://arxiv.org/html/2406.10279v1
AI bots hallucinate software packages and devs download them ・ The Register
https://www.theregister.com/2024/03/28/ai_bots_hallucinate_software_packages/
AI code helpers just can’t stop inventing package names ・ The Register
https://www.theregister.com/2024/09/30/ai_code_helpers_invent_packages/
Gmail For Exfiltration_ Malicious npm Packages Target Solana
https://socket.dev/blog/gmail-for-exfiltration-malicious-npm-packages-target-solana-private-keys-and-drain-victim-s
Malicious Package in @async-mutex_mutex _ Snyk
https://security.snyk.io/vuln/SNYK-JS-ASYNCMUTEXMUTEX-8608458