セキュリティ研究者は、進行中のサプライチェーン攻撃によって少なくとも187個のnpmパッケージが侵害され、他のパッケージを感染させる悪意のある自己増殖型ペイロードが仕込まれていることを特定しました。
「Shai-Hulud」と名付けられたこの協調的なワーム型キャンペーンは、週に200万回以上ダウンロードされている@ctrl/tinycolor npmパッケージの侵害から昨日始まりました。
その後、キャンペーンは大幅に拡大し、現在ではCrowdStrikeのnpmネームスペースで公開されているパッケージも含まれています。
tinycolorからCrowdStrikeへ
昨日、シニアバックエンドソフトウェアエンジニアのDaniel Pereira氏が、世界最大のJavaScriptレジストリnpmjs.comに影響を与える大規模なソフトウェアサプライチェーン攻撃についてコミュニティに警告しました。
「この記事を読んでいる間にもnpmでマルウェアが拡散しています」とエンジニアは書き、@ctrl/tinycolorプロジェクトの最新バージョンのインストールを控えるよう注意を促しました。

Pereira氏は過去24時間、より控えめなチャネルを通じてGitHubの注意を引こうとしていました。「多くのリポジトリが標的になっている」ため、攻撃を公に明かすことで人々を危険にさらす可能性があると考えたためです。
「しかし、GitHubへの連絡は非常に困難です。例えば、リポジトリ内でシークレットが漏洩しています。これは深刻です」とエンジニアは述べています。
ソフトウェアサプライチェーンセキュリティ企業のSocketはこの侵害の調査を開始し、このキャンペーンで少なくとも40個のパッケージが侵害されたことを特定しました。本日、SocketとAikidoの研究者が追加のパッケージを特定し、被害数は少なくとも187個に上っています。
StepSecurityも技術的な詳細解説を公開し、難読化解除されたコード断片や攻撃フロー図を示し、Socketの初期調査結果をほぼ裏付けました。
影響を受けたパッケージには、CrowdStrikeのnpmjsアカウントcrowdstrike-publisherによって公開されたものも含まれています。
BleepingComputerはこの件についてサイバーセキュリティソリューションプロバイダーにコメントを求めました:
「パブリックNPMレジストリ(サードパーティのオープンソースリポジトリ)で複数の悪意のあるNode Package Manager(NPM)パッケージを検出した後、当社は迅速にこれらを削除し、パブリックレジストリ内のキーを積極的にローテーションしました」とCrowdStrikeの広報担当者はBleepingComputerに語りました。
「これらのパッケージはFalconセンサーでは使用されておらず、プラットフォームへの影響はなく、顧客も引き続き保護されています。当社はNPMと連携し、徹底的な調査を進めています。」
自己増殖型ワーム、TruffleHogを使いシークレットを窃取
侵害されたバージョンには、同じメンテナーによる他のパッケージを標的とする自己増殖メカニズムが含まれています。
マルウェアはメンテナーが管理する各パッケージをダウンロードし、そのpackage.jsonを改変し、bundle.jsスクリプト(下記参照)を挿入、アーカイブを再パッケージ化して再公開します。これにより「下流パッケージの自動トロイ化」が可能になるとSocketの研究者は説明しています。

bundle.jsスクリプトはTruffleHogを利用します。TruffleHogは、開発者やセキュリティ専門家がAPIキーやパスワード、トークンなど、コードリポジトリやその他のデータソース内にうっかり漏洩した機密情報を発見するための正規のシークレットスキャナーです。
しかし悪意のあるスクリプトは、このツールを悪用してホスト上のトークンやクラウド認証情報を検索します。
「開発者やCIの認証情報を検証・利用し、リポジトリ内にGitHub Actionsワークフローを作成し、結果をハードコードされたWebhook(hxxps://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7)に送信します」とSocketは説明しています。
「Shai-Hulud」という名称は、侵害されたバージョンに含まれるshai-hulud.yamlワークフローファイルに由来し、フランク・ハーバートのDuneシリーズに登場する巨大サンドワームへの言及です。
「特別な参照ではありませんが、この名称の存在は攻撃者が意図的にキャンペーンを『Shai-Hulud』と名付けたことを強調しています」とSocketの研究者Kush Pandya氏とPeter van der Zee氏は本日述べています。
本日追加で特定されたパッケージに含まれるマルウェアは、以前のbundle.jsを使ったものと同一で、以下の動作を行います:
- 正規のシークレットスキャニングツールTruffleHogをダウンロード・実行
- ホスト上でトークンやクラウド認証情報などのシークレットを検索
- 発見された開発者やCIの認証情報が有効かどうかを検証
- リポジトリ内に不正なGitHub Actionsワークフローを作成
- 機密データをハードコードされたWebhookエンドポイントへ送信
このインシデントは、nx「s1ngularity」など継続中の大規模攻撃に続くもの
このサプライチェーン攻撃が注目される理由は、標的となった有名パッケージだけでなく、そのタイミングにもあります。
この攻撃は、同じ月に発生した2件の注目すべきサプライチェーン攻撃に続いています。
9月第1週には、AI搭載マルウェアが2,180件のGitHubアカウントを「s1ngularity」攻撃で侵害しました。
本日の攻撃の根本原因はまだ調査中ですが、Pereira氏を含む専門家は、今回の攻撃が「s1ngularity」の攻撃者によって仕組まれた可能性があると推測しています。
今月初めには、人気のchalkおよびdebug npmパッケージのメンテナーも、別の攻撃でフィッシング被害に遭い、プロジェクトが侵害されました。
これらの攻撃の波及効果は依存チェーンの奥深くまで及び、Google Gemini CLIのような広く利用されているプロジェクトにも影響を与える可能性があります。Gemini CLIは週末に声明を発表しました:
「明確にしておきたいのは、Gemini CLIのソースコード自体は侵害されておらず、当社サーバーも安全です」とGoogleプロダクトマネジメントシニアディレクターのRyan J. Salva氏は述べています。
「しかし、このインシデントは、攻撃期間中にNPMインストール方法でGemini CLIをインストールまたはアップデートしたユーザーに影響を与えた可能性があります。インシデントの詳細、影響を受けるユーザー、システムの安全を確保するための手順を明確に説明します。」
これら継続中の攻撃は、現代のソフトウェアサプライチェーンの脆弱さを示しています。1つの悪意あるプルリクエストや侵害されたメンテナーアカウントが、数百のプロジェクトに波及する可能性があります。
GoogleやCrowdStrikeのようなベンダーはコアプラットフォームの安全性を強調していますが、このインシデントは開発者がソフトウェアビルドやパイプラインを保護する緊急性を浮き彫りにしています。
影響を受けたユーザーは、環境やログに侵害の兆候がないか監査し、すべてのシークレットやCI/CDトークンをローテーションし、依存関係ツリーに悪意のあるバージョンがないか確認すべきです。信頼できるリリースへの依存関係の固定や、公開用認証情報の範囲制限は、パッケージレベルの侵害リスクを減らすための重要な手段です。