AIが生成した架空パッケージ名が悪用される「スロップスワッティング」の脅威
今回報告された事例は、AIエージェントが開発タスクに必要なパッケージ名を推奨したことから始まります。その推奨されたパッケージは、いかにも正規のライブラリであるかのように見えましたが、実際には攻撃者がAIの「幻覚」を利用して仕込んだマルウェアでした。この手口は「スロップスワッティング」と呼ばれ、AIモデルが作り出す、もっともらしいが存在しないパッケージ名を狙って、攻撃者が同名の悪意あるパッケージを登録するものです(出典)。
「AIモデルが時にはもっともらしいが存在しないパッケージ名をでっち上げ、攻撃者がその正確な名前で実際の悪意あるパッケージを登録する、というパターンに、セキュリティ研究者は『スロップスワッティング』と名付けました。」
私の個人的な感覚としては、AIがもっともらしい嘘をつくという特性が、まさかこんな形でセキュリティ脅威に直結するとは、正直ここまで来たかという感じがします。開発者がAIを信頼して作業を効率化しようとする心理を巧みに突いており、非常に巧妙な手口ではないでしょうか。AnthropicやOpenAIのモデルでも、認証情報の不正利用やサプライチェーン攻撃に関わる事例が報告されていることからも、AIが生成するコードや提案には常に注意を払うべきだと強く感じます(出典)。
| 項目 | 旧来のサプライチェーン攻撃 | スロップスワッティング |
|---|---|---|
| 攻撃者の動機 | 有名ライブラリの乗っ取り/類似名 | AIの「幻覚」を利用した新規作成 |
| ターゲット | 広範囲の開発者 | AIを開発に活用する開発者 |
| 脅威の起点 | 既知の脆弱性/悪意ある挿入 | AIの生成結果 |
| 対策の難易度 | 比較的確立されている | 新規の手口で対策が追いつきにくい |
なぜAIの推奨をそのまま信用してはいけないのか
今回Softjourn社が危険を回避できたのは、AIが推奨するソフトウェアをダブルチェックするという明確なポリシーを持っていたからです。エンジニアはGitHubでソースコードを軽く確認し、ダウンロード数が少ないことや、作成されたばかりであることから不審に感じ、インストールを中止しました(出典)。
AIは素晴らしいツールですが、その出力は常に「ファクトチェック」が必要です。特に、以下のような点に注意すべきだと感じます。
- AIモデルの「幻覚(Hallucination)」: LLMは、あたかも真実であるかのように誤った情報を生成することがあります。パッケージ名についても例外ではありません。
- 攻撃者の戦略: 納期に追われる開発者が、AIの推奨を鵜呑みにしてすぐにインストールするだろうという攻撃者の読みが、この手口の根幹にあります。
- サプライチェーン攻撃: 悪意あるパッケージをインストールすると、システムへのバックドア設置、データ窃盗、その他の破壊行為につながる可能性があります。これは、スタートアップのサービスにとって致命的な問題になりかねません。
GCPを主軸に使っている私としても、Cloud Runでデプロイするコンテナイメージや、BigQueryで扱うデータパイプラインで使用するライブラリ選定には、この教訓を活かさなければと強く思いました。AIに生成させたDockerfileやスクリプトに含まれる依存関係は、特に慎重に確認する必要がありますね。
開発現場で実践すべき具体的なセキュリティ対策
AIの恩恵を最大限に享受しつつ、このようなリスクから身を守るためには、以下の対策を開発フローに組み込むことが重要です。
- AI推奨パッケージの厳格な検証: AIが推奨するパッケージは、必ずダウンロード数、最終更新日、GitHubのリポジトリでの活動状況を確認する。
- ソースコードレビューの習慣化: 可能であれば、特に新規導入するパッケージのソースコードは、簡易的でも良いのでレビューする。
- 信頼できるリポジトリの使用: 公式なパッケージレジストリ(PyPI、npmなど)からのみインストールし、野良のソースは避ける。
- 人間による最終承認: AIが生成したコードや推奨事項がプロジェクトに取り込まれる前に、必ず人間のエンジニアが確認し、承認するプロセスを設ける。
SoftjournのSergiy Fitsak氏も「ルーティンに見えるAIの推奨であっても、ダウンロード数を確認し、GitHubでソースコードをレビューする習慣をすでに築いていたからこそ、私たちはこれに気づくことができました」と語っています。これは、多少の手間がかかっても、セキュリティを軽視してはいけないという重要なメッセージです(出典)。