2026-08-08

ロシアのハッカーがAIスロップスカッティングを利用して700以上の悪意のあるnpmパッケージを公開

ロシアの脅威アクターがnpmレジストリに対して大規模なサプライチェーン攻撃を行い、48時間以内に700以上の悪意のあるパッケージを公開しました。この攻撃はWEL1DROPPERとして追跡されており、AIによって生成されたパッケージ名を使用して開発者を欺く手法が特徴です。これらのパッケージは、特にインストールスクリプトを必要とせず、単一のrequire()呼び出しで感染を引き起こします。攻撃者は、DNS TXTレコードを利用してペイロードを隠す巧妙な手法を採用しており、従来のセキュリティ対策を回避することが可能です。

メトリクス

このニュースのスケール度合い

7.5 /10

インパクト

8.0 /10

予想外またはユニーク度

7.5 /10

脅威に備える準備が必要な期間が時間的にどれだけ近いか

8.5 /10

このニュースで行動が起きる/起こすべき度合い

8.5 /10

主なポイント

  • ロシアのハッカーがAIスロップスカッティングを利用して、npmレジストリに700以上の悪意のあるパッケージを公開しました。
  • これらのパッケージは、開発者が無意識に感染するように設計されており、特にインストールスクリプトを必要としません。

社会的影響

  • ! この攻撃は、開発者の信頼を損ない、npmエコシステム全体のセキュリティに対する懸念を引き起こします。
  • ! 悪意のあるパッケージの増加は、ソフトウェア開発の安全性を脅かし、企業の業務に深刻な影響を与える可能性があります。

編集長の意見

WEL1DROPPERの攻撃は、サプライチェーン攻撃の新たな進化を示しています。特に、AIを利用したスロップスカッティングは、開発者が無意識に悪意のあるコードを取り込むリスクを高めています。この手法は、従来のセキュリティ対策を回避するために巧妙に設計されており、特にインストールスクリプトを必要としない点が特徴です。開発者は、無害に見えるパッケージを安易に取り込むことができるため、注意が必要です。さらに、攻撃者はDNSを利用してペイロードを隠すことで、従来の監視ツールを回避することが可能です。このような新しい攻撃手法に対抗するためには、開発者や企業は、パッケージの信頼性を確認するための厳格なプロセスを導入する必要があります。また、DNSクエリのパターンやドロップファイルの命名規則に注目し、動的なインフラストラクチャに対する防御策を強化することが求められます。今後、サプライチェーン攻撃はますます巧妙化することが予想されるため、開発者は常に最新の脅威情報を把握し、適切な対策を講じることが重要です。

解説

require一発、DNS TXTで潜伏—AIスロップスクワッティング「WEL1DROPPER」がnpmに1,000超の悪性パッケージを拡散です

今日の深掘りポイント

  • 悪性パッケージはpostinstallなどのインストールスクリプトに依存せず、単一のrequire()で実行フェーズに到達する設計です。従来の「ignore-scripts」前提の防御が迂回されますです。
  • ペイロードをDNS TXTレコードに潜ませることで、HTTP中心の検査や静的SCAをすり抜け、ビルド環境や開発端末のDNS可視性の弱さを突いてきますです。
  • 攻撃はAI生成のパッケージ名で検索面を飽和させる「スロップスクワッティング」を採用し、正規パッケージ探索時の認知負荷と誤選択率を高めますです。
  • 初動から48時間で700件規模、のち1,000超へ拡大しており、開発端末とCI/CDの双方を同時に汚染し得るサプライチェーン脅威です。ロックファイル固定、ミラー隔離、DNS監視の三点を即時に強化する必要がありますです。
  • 指標のプロファイルから、緊急性と行動可能性が高く、現場の迅速な運用変更が効果を持つ案件です。一方で確定的アトリビューションは避け、観測事実に基づく対策優先で進めるべき段階です。

はじめに

npmの検索窓に類似名がずらりと並ぶ風景は日常ですが、今回の「WEL1DROPPER」はその雑音をAIで意図的に増幅し、開発者のワンクリックと一行のrequire()だけで侵入を果たす設計です。しかもペイロードはDNS TXTに隠れ、ネットワークとSCAの双方をすり抜けます。48時間で700件、その後1,000超にまで増殖したというスケールは、攻撃者側の自動化成熟度と、我々の開発プロセスの盲点を同時に映し出していますです。
本稿では、事実整理とその技術的意味合い、想定される脅威シナリオ、そして現場が今日から変えられる具体策を掘り下げますです。

深掘り詳細

事実整理(ファクト)

  • 攻撃クラスターはWEL1DROPPERとして追跡され、最初の48時間で700以上の悪性npmパッケージが公開され、その後1,000超に拡大していますです。
  • パッケージ名はAI生成を用いて正規名の周辺に大量展開され、READMEも無害に見えるよう整えられていますです。
  • 悪性コードはインストールスクリプトに頼らず、モジュール読込時のrequire()評価で実行されるため、開発端末でもCIでも「導入直後=実行」のタイミングを得ますです。
  • ペイロードはDNS TXTレコードに格納され、Node.jsからのDNS照会で取り出し、復号・実行される手口が報告されています。これによりHTTPダウンロード検知や静的依存関係解析の網を潜りやすくなりますです。
  • 攻撃者の関与についてはロシア起点が示唆されていますが、アトリビューションは観測情報に基づく段階であり、断定は避けるのが妥当です。

出典: 下記参考情報を参照くださいです。

何が新しく、厄介か(インサイト)

  • 「ignore-scriptsで安全」という暗黙の前提を外しに来ています。require()時に走るため、ビルド時でも実行時でも等しく踏む地雷です。SCAや署名検証だけでは「実行の瞬間」を止められない設計なのが本質です。
  • DNS TXTという運搬路は、HTTPと比較して多くの環境で可視化・制御が手薄です。ビルド用サブネットや開発端末のDNSを正規解決の品目管理まで落とし込んでいる組織は少数派で、攻撃者はそこに賭けていますです。
  • AIスロップスクワッティングは、検索面の「信号対ノイズ比」を崩し、正規パッケージの探索難度を上げる“人間側の資源攻撃”でもあります。開発者の注意力・時間という有限資源をAIで削り取り、誤選択の母数を増やす戦略です。
  • CI/CDは「短命・再現可能」という美徳ゆえに、感染しても痕跡が残りにくく、検証も「成功=安全」と誤認しがちです。今回の設計は、まさにその前提を逆手に取っていますです。

運用上の要所(どこで止めるか)

  • 依存の導入時点で止める: ロックファイル完全固定、未知依存の自動拒否、リポジトリ単位の依存許可リスト運用です。
  • 実行時に止める: Node.jsのポリシーモード(policyファイル)やESM/requireの解決ポリシーを使い、実行許可されていないモジュールや動的ロードを殺す設計です。
  • ネットワークで止める: ビルド・開発セグメントのDNS egressを制御し、TXT照会を原則拒否(必要ドメインのみ許可)し、DNSログを恒常的に集約・分析することです。

脅威シナリオと影響

以下は観測事実に基づき、MITRE ATT&CKのフレームに沿って組み立てた仮説シナリオです。各組織の環境に合わせて適用可否を検討くださいです。

  • 初期侵入(T1195: Supply Chain Compromise / 依存関係の汚染)
    • 開発者が類似名パッケージを選択し、ローカルやCIでrequire()した瞬間に悪性コードが評価されますです。
  • 実行(T1059.007: Command and Scripting Interpreter: JavaScript)
    • モジュール初期化コードが実行され、次段取得や環境偵察のロジックが動きますです。
  • C2/ペイロード搬入(T1071.004: Application Layer Protocol: DNS)
    • DNS TXTでエンコードされたペイロードを取得し、復号(T1140)・難読化(T1027)を併用しますです。
  • 防御回避(T1027/T1140)
    • スクリプトの難読化、動的取得、短命インフラでシグネチャ回避を図りますです。
  • 偵察・認証情報窃取(T1082/T1552 など、仮説)
    • 環境変数やビルドシークレット、リポジトリトークンの探索・収集に進む可能性があります。ここは観測が限定的なため仮説です。
  • 横展開・影響(T1557/T1547 など、仮説)
    • 取得したトークンでアーティファクトレジストリやCI設定にアクセス、ビルド定義改ざんや二次汚染につなげるシナリオが想定されますです。

組織への影響は、開発端末上のシークレット露出、CIランナー経由の機密コード流出、依存グラフ汚染の連鎖という三層で現れます。とりわけCI/CDは「大量同時・自動実行」の拡散力を持ち、短時間で広範囲に被害が伸びるため、初動封じ込みのタイムウィンドウが短い点に留意が必要です。

セキュリティ担当者のアクション

今日から動ける順に、運用と技術の両輪で整理しますです。

  • 直ちに(0–24時間)

    • すべてのビルドでnpm ciを強制し、既存lockfile以外の依存導入を失敗させますです。
    • 依存の新規追加・更新を一時凍結し、承認制フロー(チケット+二名レビュー)を暫定導入しますです。
    • ビルド/開発セグメントのDNSでTXTクエリを原則拒否し、必要ドメインのみ例外許可します。ログを集中収集し、TXT応答サイズが大きい照会を優先ハンティングしますです。
    • 社内npmプロキシ/ミラー(仮想リポジトリ)に切替え、外部レジストリ直アクセスを遮断しますです。
    • 既知悪性パッケージ名のブロックリストをプロキシに適用し、導入を失敗させますです。
  • 近接対策(24–72時間)

    • Node.jsの実行環境にポリシーファイルを適用し、許可外モジュールの読み込みと動的requireを拒否しますです。
    • SCA/依存監査で「新規発行者」「公開24–48時間以内」「メタデータ薄い」などの高リスク特徴量に基づく導入ゲートを設定しますです。
    • 開発端末とCIランナーのプロセス監視で、nodeプロセスからの大量DNS照会、child_processのスパウン、PowerShell/curl呼び出しなどの組み合わせ検知ルールを追加しますです。
    • 秘密情報の取り扱いを見直し、CI環境変数の最小権限化、短寿命トークン化、スコープ絞り込みを行いますです。
  • 中期整備(1–4週間)

    • 依存許可リスト運用(組織承認済みパッケージと発行者のホワイトリスト)をレポジトリ単位で定着させますです。
    • 開発者体験を損なわない「安全な探索面」を社内に用意します。社内ミラーで信頼済みタグのバッジ表示、説明文の差分提示など、検索時の認知負荷を下げる工夫が効きますです。
    • サプライチェーン・インシデントに特化したプレイブックを整備し、「誤導入の検知→範囲特定→トークンローテーション→依存ピン留め→再ビルド」の手順を自動化しますです。
    • DNS監視を恒常運用に格上げし、TXTだけでなく、DNS経由のデータ転送やDGA的挙動の振る舞い分析をパイプライン化しますです。
  • 注記(期待値調整)

    • ignore-scriptsは他のnpm系攻撃には有効ですが、本件のようにrequire()実行に依存する設計には十分ではありません。多層の統制で相互補完する前提で適用してくださいです。
    • 「署名」や「発行者確認」も万能ではありません。短期間で大量生成される“それっぽい”新規発行者をどう扱うかの運用基準(年齢・履歴・ソース公開有無など)の整備が実効性を分けますです。

メトリクスからは、緊急対応の価値が高く、かつ持続的な改善投資も合理化できる案件と読めます。短期はミラー隔離とDNS統制、長期は許可リストと実行ポリシーの制度化で「導入時」「実行時」「通信時」の三つの関門を作ることが、現場のコストに見合う最小セットです。


参考情報

背景情報

  • i WEL1DROPPERは、AIによって生成されたパッケージ名を使用して開発者を欺く新しい攻撃手法です。攻撃者は、無害に見えるREADMEファイルを用意し、単一のrequire()呼び出しで感染を引き起こします。
  • i この攻撃は、DNS TXTレコードを利用してペイロードを隠す巧妙な手法を採用しており、従来のセキュリティ対策を回避することが可能です。