概要
2025年11月24日、npm(Node Package Manager)において、Shai-Huludと呼ばれるマルウェアによる大規模なサプライチェーン攻撃が確認されました。この攻撃により、Zapier、ENS Domains、PostHog、Postmanなど、数百に及ぶ有名パッケージのトロイの木馬化されたバージョンがnpmレジストリに公開されました。目的は、開発者やCI/CD(継続的インテグレーションおよび継続的デリバリー)の機密情報を盗み出すことであり、盗まれたデータはエンコードされた形式でGitHubに自動的に公開されています。
発表時点では、この攻撃に関連するGitHubのエントリが27,600件以上も確認されており、事態の深刻さを示しています。
マルウェアの詳細と攻撃の手口
Shai-Huludマルウェアがnpmスペースに初めて出現したのは9月中旬で、当時187のパッケージが自己増殖型ペイロードによって侵害されました。このペイロードはTruffleHogツールを使用して開発者の秘密情報を盗み出していました。
今回の新しいキャンペーンでは、攻撃者は正規のパッケージをダウンロードし、そのpackage.jsonファイルに悪意のあるスクリプトを注入。その後、侵害されたメンテナーアカウントを使用して、これらの改変されたパッケージをnpmに再公開しました。マルウェア研究者のチャーリー・エリクセン氏がこのキャンペーンを発見した当初は105のトロイの木馬化されたパッケージが確認されていましたが、その後492にまで増加。全体では27,000以上の悪意のあるパッケージが確認されています。
Wizクラウドセキュリティプラットフォームの研究者によると、このキャンペーンでは約350のユニークなメンテナーアカウントが使用されており、直近では30分ごとに1,000の新しいリポジトリがGitHubに追加されているとのことです。
CI/CDセキュリティ企業Step Securityの技術分析によると、新しいShai-Huludマルウェアのペイロードは主に2つのファイルに存在します。一つはBunインストーラーを装ったドロッパーであるsetup_bun.js、もう一つはサイズが10MBにも及ぶbun_environment.jsです。後者のファイルは、数千のエントリを持つ大規模なhexエンコード文字列、アンチ分析ループ、コード内のすべての文字列を取得するための難読化された関数など、極端な難読化技術に依存しています。
Wizによると、悪意のあるコードはプリインストール段階でのみ実行され、以下のファイルを生成します:
cloud.jsoncontents.jsonenvironment.jsontruffleSecrets.json
盗まれた秘密情報は、「Sha1-Hulud: The Second Coming」という説明を持つ自動生成されたGitHubリポジトリに公開されています。これは、攻撃者がGitHubアカウントにもアクセスし、これらのリポジトリを作成していることを示唆しています。
影響を受けたパッケージと推奨される対策
Aikido Securityが発見した186のShai-Huludマルウェア感染パッケージのリストには、Zapier、ENS Domains、AsyncAPIなどの主要なパッケージが多数含まれています。特にZapierのパッケージは、Zapier連携を構築するための公式ツールキットであり、ENS Domainsのパッケージは.ethドメインの解決や公式ENSスマートコントラクトとの連携に広く使用されているため、その影響は甚大です。
現在、一部の感染パッケージはnpmからダウンロード可能ですが、プラットフォーム上には不正な最新バージョン公開に関する警告メッセージが表示されているケースもあります。
開発者には以下の対策が強く推奨されます:
- Aikidoが公開している感染パッケージの完全なリストを確認し、該当する場合は安全なバージョンにダウングレードしてください。
- 直ちにすべての機密情報(シークレット)とCI/CDトークンをローテーションしてください。
- Wizの研究者は、npm、GitHub、およびクラウドプロバイダーに関連するすべての認証情報をローテーションすることを推奨しています。
- 可能であれば、継続的インテグレーションプロセス中にnpmの
postinstallスクリプトを無効にすることを検討してください。
GitHubは攻撃者のリポジトリを削除する対応を行っていますが、攻撃者は非常に速いペースで新しいリポジトリを作成し続けています。GitHubはnpmに対するサプライチェーン攻撃を防ぐための追加のセキュリティ対策を導入していますが、これらの対策は段階的に実施されている最中です。
