ハルシネーション悪用 - ハルシネーション悪用
LLM のハルシネーション(幻覚)を利用し、存在しないパッケージ名やURLを生成させてマルウェア配布に悪用する攻撃。
概念図
パッケージハルシネーション(スロップスクワッティング)
LLM はコード生成時に、実在しないパッケージ名を「もっともらしく」出力することがある。
この現象を悪用した攻撃が**スロップスクワッティング(Slopsquatting)**である。
攻撃は以下の流れで行われる。
- 攻撃者が LLM に繰り返し質問し、高頻度で出力される架空パッケージ名を特定する
- そのパッケージ名で PyPI・npm・RubyGems 等のレジストリにマルウェアを登録する
- 他のユーザーが LLM の推薦に従ってパッケージをインストールすると、マルウェアが実行される
以下はスロップスクワッティングが危険である理由をまとめたものである。
| リスク要因 | 説明 |
|---|---|
| 高い再現性 | LLM は同じ架空パッケージ名を繰り返し出力する傾向がある。攻撃者は事前に出力パターンを予測できる |
| ユーザーの信頼 | ユーザーは LLM の回答を信頼しやすく、パッケージの実在性を検証しないことが多い |
| 警戒されにくい | 従来のタイポスクワッティングと異なり、LLM が自信を持って推薦するため不審に思われにくい |
URL ハルシネーションの悪用
LLM はドキュメントや参考資料の URL を生成する際に、実在しないドメインやパスを出力することがある。
攻撃者はこれを悪用し、架空の URL のドメインを取得してフィッシングサイトやマルウェア配布サイトを構築する。
| リスク | 概要 |
|---|---|
| フィッシング | 架空の「公式ドキュメント」URL にログインフォームを設置し、認証情報を窃取する |
| マルウェア配布 | 架空の「ダウンロードページ」からマルウェア入りのバイナリを配布する |
| 偽情報の拡散 | 架空の「技術ブログ」に誤ったセキュリティ設定を掲載し、脆弱な構成を誘導する |
| API リファレンスの捏造 | 存在しない API エンドポイントの URL を生成し、開発者がコードに組み込むと攻撃者のサーバーにデータが送信される |
被害事例と研究
2024年の研究では、複数の主要 LLM に対してコード生成を依頼した際、推薦されたパッケージの約 20% が実在しないことが確認された。
さらに、同じ質問を繰り返すと同一の架空パッケージ名が高い確率で再出力されることが判明し、攻撃の予測可能性と実行可能性が示された。
実際に、攻撃者が LLM の出力傾向を分析し頻出する架空パッケージ名を PyPI に登録した事例が報告されている。
npm でも同様に、LLM が推薦しやすい名前のパッケージが悪意を持って登録されるケースが増加している。
| 攻撃手法 | 名前の決め方 | 規模 |
|---|---|---|
| タイポスクワッティング | 正規名の誤入力を狙う | 限定的 |
| スロップスクワッティング | LLM が生成する名前を先取り | 大規模・自動化可能 |
