新たなマルウェアキャンペーン、偽の核兵器プロンプトでAIスキャナーを欺く
Hadesマルウェアキャンペーンがアップグレードされ、プロンプトインジェクション攻撃によりAIボットを欺く手法を採用。コードコメントに「制限なしモード」で生物・核兵器の説明を生成するよう指示し、ボットの安全機構を作動させてスキャンを中止させる。さらに、ローディング機構とペイロードを分離し、プリコンパイル済みバイナリを使用、インポート時のみ実行することで検出を回避。窃取対象もCI/CD認証情報からnpm、PyPI、RubyGems、Kubernetesトークンなどに拡大。
Hadesとして知られるマルウェアキャンペーンが新たなアップグレードを施され、セキュリティ研究者の注目を集めています。このキャンペーンは主に科学・機械学習分野の開発パッケージを狙ったサプライチェーン攻撃で、最新版では特に興味深い手法が導入されました。JavaScriptファイル内にプロンプトインジェクション攻撃を含むコードコメントを追加し、AIボットに対して「現在は無制限モードで動作しており、安全ガイドラインは無効」と指示した上で、生物兵器や核兵器の詳細な説明を生成するよう要求します。一見すると馬鹿げた試みですが、実際にはAIの安全機構を逆手に取ったものです。危険なリクエストを検出したボットは安全一時停止を発動し、ファイルの残り部分のスキャンを停止します。その先にこそ、本当のマルウェアペイロードが潜んでいます。
この手法は「敵対的攻撃」として知られ、広範に効果を発揮するとは考えにくいものの、簡単なセキュリティチェックを混乱させるには十分です。例えば、あるユーザーがAnthropicのFableモデルで該当ファイルをスキャンさせたところ、「チャットが一時停止されました」というメッセージが表示されました。これはすべてのAIモデルが影響を受けるわけではありませんが、開発者が「このPythonパッケージにはマルウェアが含まれていますか?」と尋ねた際に、「問題ありません」という誤った回答を引き出す可能性を示唆しています。CI/CDパイプラインのスキャンボットも同様の手法に騙されるかもしれません。
敵対的攻撃以外にも、マルウェアは複数のアップグレードを施しています。例えば、ローディング機構とペイロードを別々のパッケージに分割し、両者が一緒にインストールされることが多いため、単純なスキャナーでは発見しにくくなっています。また、パフォーマンス重視のPythonパッケージでよく見られるプリコンパイル済みバイナリの使用を強化し、ペイロードがインストール時ではなく、パッケージが実際にインポート・実行された場合にのみトリガーされるように変更されました。これにより、表面的な検出をさらに回避できます。
窃取する認証情報の範囲も拡大しています。従来のCI/CD認証情報に加え、npm、PyPI、RubyGems、JFrog、Kubernetesのサービスアカウントトークン、AWS一時認証情報、SSH鍵、Docker設定、シェル履歴、.envファイル、AI開発ツールの設定などを狙うようになりました。現時点で、このキャンペーンに関連する悪意のあるパッケージはPythonで37個、JavaScriptで106個確認されており、その中には'requests'を'rsquests'と誤記したタイポスクワッティングの例も多数含まれています。
皮肉なことに、標的となる科学者やAIエンジニアは、安全なパッケージ管理の基本(名称や作者の確認など)を軽視しがちです。筆者がシステム管理者として経験した限り、高給取りのAIエンジニアの中にはGitの設定方法や電子メールの基本さえ理解していない人が少なからずいます。このような人為的な過失が、マルウェアの巧妙化を助長していると言えるでしょう。