1 ポイント 投稿者 GN⁺ 2025-11-25 | 1件のコメント | WhatsAppで共有
  • Shai Hulud 2.0 が npm エコシステムを再び攻撃し、Zapier、ENS Domains、AsyncAPI、PostHog、Postman など主要プロジェクトのパッケージを感染させた
  • 悪性コードはインストール過程で自動実行され、開発者システムとクラウド環境の秘密情報を窃取
  • 感染したシステムで TruffleHog を使って API キー、トークン、パスワードなどを探し、公開 GitHub リポジトリにアップロード
  • 今回の攻撃は以前より拡大し、最大100個のパッケージを感染、認証失敗時には ホームディレクトリのファイル削除機能 も含む
  • npm エコシステムの信頼の仕組みを脅かす大規模なサプライチェーン攻撃であり、すべての開発チームに秘密情報の点検と交換の必要性を突きつけた

Shai-Hulud キャンペーン概要

  • Shai-Hulud は npm エコシステムで自己増殖するワーム型マルウェアで、感染した開発環境を通じて急速に拡散
    • 感染時に TruffleHog を使って API キーやトークンなど露出した秘密情報を検索
    • 収集した情報は 公開 GitHub リポジトリへ送信され、その後新たな悪性パッケージを npm に公開して拡散
  • 攻撃者は今回の攻撃を 「Second Coming」 と命名
  • npm が 12月9日に旧式トークンを廃止すると予告したタイミングに合わせて攻撃が再開された

攻撃タイムライン

  • 8月27日: S1ngularity キャンペーンのレポート公開
  • 9月16日: 1回目の Shai-Hulud 攻撃が発生
  • 9月18日: 技術分析とペイロード動作の報告
  • 11月24日: npm トークン廃止直前に 2回目の攻撃(Second Coming) が発生
広告

攻撃手法の変化

  • 今回の攻撃では setup_bun.js ファイルを通じて Bun ランタイムをインストールし、その後 bun_environment.js を実行
  • ランダムな名前の GitHub リポジトリを生成して窃取データをアップロード
  • 感染対象パッケージ数が 20個から100個に増加
  • GitHub または npm の認証に失敗した場合、ユーザーのホームディレクトリ全体を削除する機能を含む

感染したパッケージ

  • 合計 492個の npm パッケージが感染しており、月間ダウンロード数は 1億3,200万回に達する
  • 主な被害プロジェクト: Zapier、ENS Domains、AsyncAPI、PostHog、Postman、Browserbase
  • 例示パッケージ: @zapier/zapier-sdk, @ensdomains/ensjs, @asyncapi/cli, posthog-js, @postman/pm-bin-linux-x64 など

秘密情報の流出

  • 悪性コードは 「Sha1-Hulud: The Second Coming」 という説明を含む GitHub リポジトリに秘密情報をアップロード
  • 現時点で 26,300個以上のリポジトリが露出したことが確認されている

攻撃者のミス

  • 一部のパッケージには setup_bun.js のみが含まれ、bun_environment.js が欠落していたため、ワームが完全には実行されなかった
  • このため 攻撃の拡散範囲は限定された
広告

感染経路と最初の感染地点

  • 最初の感染は 2025年11月24日 03:16:26 GMT+0go-template および AsyncAPI 関連の36個のパッケージで始まった
  • その後 PostHog(04:11:55)Postman(05:09:25) の順に拡散
  • AsyncAPI CLI リポジトリで 悪性ブランチ作成後に配布されたコードが確認された

潜在的影響

  • インストール時に自動実行され、開発者のローカル環境、ビルドシステム、クラウド認証情報にアクセス可能
  • 窃取された秘密情報を通じて 追加のアカウント侵害や悪性パッケージ公開 の可能性
  • npm エコシステムの 信頼ベースのサプライチェーンセキュリティに対する深刻な脅威

セキュリティ対応の推奨

  • Zapier および ENS 関連の npm 依存関係を総点検
  • GitHub、npm、クラウド、CI/CD の秘密情報を全面交換
  • GitHub で 「Sha1-Hulud: The Second Coming」 という説明があるリポジトリを探索
  • CI 環境で npm の postinstall スクリプトを無効化
  • パッケージバージョンの固定と MFA の有効化Safe-Chain などのツールで悪性パッケージを遮断

結論

  • Shai-Hulud 2.0 は npm サプライチェーンを狙った大規模な再攻撃であり、
    数百の人気パッケージと数千の GitHub リポジトリが影響を受けた
  • すべての開発チームは 依存関係の検証、秘密情報の交換、自動インストールスクリプトの遮断 を直ちに実施する必要がある

1件のコメント

 
GN⁺ 2025-11-25
Hacker Newsの意見
  • Bubblewrap(bwrap) に言及する価値がある。このツールは、npm/node 環境で発生しうる攻撃ベクトルの大半を排除するか、少なくとも 任意コード実行時の被害を制限 できる
    完璧な解決策ではないが、簡単なラッパースクリプトと組み合わせれば、rootless Podman コンテナよりずっと良いと思う
    Bubblewrap GitHub リンク

  • Python で書かれたスクリプトを共有する。このスクリプトは、自分のリポジトリにある pnpm または npm の lock ファイルに破損したパッケージが含まれているか を確認してくれる
    スクリプトのリンク

  • 最初は重複(Dup)に見えたが、実際には別の記事だった
    関連リンク

    • 関連コメントを1つに 統合 したと説明している。リンクが異なっていても、議論のテーマが実質的に同じなら統合基準に合致する。2つ目のリンクには追加情報があったため、元記事の上部にあわせて表示したという
    • この記事には 追加情報 がかなり多いと言及している
    • 同じリンクの再投稿には「Dup」、別リンクでも同じ出来事についての記事には「See also」を使うよう提案している
    • 重複ではなく、同じ出来事を扱っているが 内容の異なる記事 だと強調している
    • 参考として Shai-Hulud Returns: Over 300 NPM Packages Infected (helixguard.ai) もあわせて提示している
  • 重複した議論は こちらで進行中 と案内している

  • タイトルに 誤字 があると指摘している。現在の HN タイトルは

    SHA1-Hulud the Second Comming – Postman, Zapier, PostHog All Compromised via NPM
    だが、正しい表記は Shai-Hulud である

    • ただし実際に秘密情報がアップロードされたリポジトリ名は Sha1-Hulud: The Second Coming なので、そこで混乱が生じたようだ
    • ワーム自体が GitHub に sha1-hulud という名前で秘密情報を投稿している
      関連 GitHub 検索リンク
    • 「coming」のスペルも m は1つだけであるべきだ とし、もしかすると意図的な言葉遊びなのかと問う意見もある
    • ダウンボートされた理由がわからないとし、実際の攻撃は SHA1 アルゴリズムとは無関係であり、名前にもそうした パロディの意図はない と説明している