8月8日、GBHackersが「Russian Hackers Use AI Slopsquatting to Publish 700+ Malicious npm Packages」と題した記事を公開した。ロシア系の脅威アクターがAIスロップスクワッティングを悪用し、npmレジストリに700本以上の悪意あるパッケージを公開したサプライチェーン攻撃のキャンペーンについて詳しく報告されている。なお、一部の帰属判定・ペイロード特定は現時点で未確認の情報を含む。
インストールスクリプト不要——require()の一行で感染する新手法
今回の攻撃キャンペーンはWEL1DROPPERと名付けられており、セキュリティ研究者のPaul McCartyが調査内容を公開した。わずか48時間で700本以上の悪意あるパッケージがnpmに登録され、その後のカウントはすでに1,000本を超えた。
これまでのnpmサプライチェーン攻撃の多くは、preinstallやpostinstallといったライフサイクルフックを悪用して任意コードを実行していた。WEL1DROPPERはこのアプローチを完全に捨てている。パッケージにはインストールスクリプトが存在しない。READMEに「require("checkout-mobile-bnpl")を呼び出せ」とだけ書かれており、その一行のimportが感染チェーンを起動する。トリガーはパッケージに同梱された_helpers.jsで、importされた瞬間に自動実行される仕組みだ。
パッケージの外見は小規模なモバイルSDKを装っており、init()、version()、configure()といったダミーのメソッドまで実装されている。実際のペイロードは無害そうなexport文の下に隠されている。
AIスロップスクワッティングとは何か
AIスロップスクワッティング(AI slopsquatting)とは、AIコーディングアシスタントが「ハルシネーション(幻覚)」として存在しない架空のパッケージ名を提案してしまう現象を逆手に取った攻撃手法だ。攻撃者はAIが生成しがちなランダムなパッケージ名を先回りして登録し、開発者がAIの提案をそのままコピペした際に悪意あるパッケージをインストールさせる。
この手法は、従来のタイポスクワッティング(人間のタイプミスを狙ったパッケージ名詐称)と本質的に異なる。タイポスクワッティングは人間のミスに依存するが、AIスロップスクワッティングはモデルの確率的な出力そのものを攻撃対象とする。ChatGPTやGitHub Copilotなどの普及でAI生成コードをそのまま採用する開発者が増えている現状において、攻撃面は今後も拡大していくと考えられる。また、npmのサプライチェーン攻撃はこれまでも繰り返し報告されてきたが、WEL1DROPPERはAIの弱点を組み込んだ点で従来の攻撃と一線を画す。
二重のC2チャネルとDNS TXTレコードを使った隠蔽
感染後の動作も巧妙だ。マルウェアはまず被害者のOSとCPUアーキテクチャを特定し、3つのCloudflare Workersホストを順番に試してネイティブペイロードをHTTPSでダウンロードする。3回すべて失敗した場合はフォールバックとしてDNS TXTレコードを使用する。wel1.ruのプラットフォーム別サブドメイン配下のTXTレコードにBase64エンコードされたチャンクとしてペイロードが分割保存されており、そこから再構築する仕組みだ。
この設計のポイントは、既知のDNSトンネリングシグネチャだけを監視しているツールでは、一見普通のTXTレコードへの問い合わせを見逃してしまう点にある。
ドロップされる実行ファイルの名前も偽装されており、LinuxとmacOSでは.cache_<hex>、Windowsではdotnet_diag_<hex>.exeとして保存され、デタッチされたバックグラウンドプロセスとして起動する。偽の「アナリティクス」マーカーファイルが6時間のレート制限スイッチとして機能し、感染チェーンの再起動を防ぐ。
macOSステージが特に高度
macOS向けペイロードはIntelとApple Siliconの両方に対応したユニバーサルMach-Oバイナリで、他のプラットフォームより作り込まれている。具体的には以下を実行する。
- デバッガ検知:lldb、frida、dtraceの存在を確認
- VM検知:VMwareのアーティファクトや低メモリ環境をチェック
- 永続化:
com.apple.windowserver.helper.plistという名前の偽装LaunchAgentをインストール - その後、第3ステージのペイロードを取得
Linuxバイナリの最終ステージは、オープンソースのC2フレームワークである**Sliver**インプラントを展開している可能性があるとされているが、これはまだ未確認だ。SliverはRed Team用途で開発されたものだが、実際の脅威アクターによる悪用事例が増えている。
ロシア系アクターとの関連
McCartyは中程度の確度でWEL1DROPPERをロシア系のアクターに帰属させている。根拠は以下の通りだ。
- C2ドメインが
.ruドメイン(wel1.ru) - XOR難読化された文字列に
tcsbank.ru(Tinkoff)やcloudpayments.ruなどロシアの金融機関への参照が含まれる(おそらくデコイのヘルスチェックトラフィックとして使用)
さらに、2026年4〜5月に250本以上のnpmパッケージを登録したMoikaキャンペーンとの関連も指摘されている。MoikaキャンペーンはWEL1DROPPERと同一または近接した脅威アクターによるものとMcCartyは見ており、インフラ命名規則(「oob」プレフィックス)、偽のテレメトリによるカモフラージュ、類似したキルスイッチ機構が共通しているという。ただし、この帰属判定も中程度の確度にとどまる点には留意が必要だ。
防御側へのアドバイス
Cloudflare WorkersのIPアドレスは動的に変わるため、静的なIPブロックリストは効果が薄い。GBHackersは、識別済みのドメイン、DNS問い合わせパターン、ドロップされるファイルの命名規則を優先して監視するよう推奨している。
また本キャンペーンは、インストールスクリプトの制限だけではnpmマルウェアを防げないことを改めて示している。開発中やテスト中にrequire()を一行実行するだけで感染が成立するため、未知パッケージの安易なインポートには注意が必要だ。AIが提案するパッケージ名は、npmレジストリ上での実在確認を必ず行う習慣が求められる。
詳細はRussian Hackers Use AI Slopsquatting to Publish 700+ Malicious npm Packagesを参照していただきたい。