イントロダクション
「デューン」シリーズの象徴的なサンドワームにちなんで名付けられた自己増殖型npmワーム「Shai-Hulud」が、再びその猛威を振るいました。今回の攻撃は、800以上のnpmパッケージと、エコシステム全体で合計1億3200万回の月間ダウンロードを侵害するという、これまでにない規模と巧妙さで実行されました。この攻撃は、npmがクラシックトークンの失効期限を12月9日に設定するわずか数週間前に発生し、多くの開発者が代替の公開方法に備えていない時期を狙ったもので、攻撃者にとって影響を最大化する絶好の機会となりました。
ワームの拡散方法
Aikido Securityの報告によると、「Shai-Hulud」は冷徹な効率性で動作します。一度開発者のシステムにインストールされると、パッケージのインストールが完了する前に自動的に悪意のあるコードを実行します。ワームは複数の悪意のある手法を同時に展開します。
- まず、TruffleHogを使用して、APIキー、認証トークン、GitHub認証情報、クラウドアクセストークンを含む公開された機密情報をスキャンします。
- 発見された機密情報は、「Sha1-Hulud: The Second Coming」という芝居がかった説明が付けられた公開GitHubリポジトリに流出します。研究者たちはすでに、攻撃者によって作成された26,300の侵害されたリポジトリを特定しています。
- 次に、ワームは悪意のあるコピーをnpmに公開することで自身を伝播させ、追加のパッケージや開発者を連鎖的に感染させます。
- 認証に失敗した場合、マルウェアはユーザーのホームディレクトリからファイルを消去し、最大限の損害を与えることを目的とした「焦土作戦」を実行します。
進化する脅威の巧妙さ
今回の「Shai-Hulud」は、以前の攻撃よりも高いレベルの洗練性を示しています。ワームは現在、setup_bun.jsを介してbun(JavaScriptランタイム)をインストールし、bun_environment.jsを通じて実際のマルウェアペイロードを実行します。攻撃者はハードコードされたリポジトリ名を使用する代わりに、ランダムなリポジトリ識別子を生成しており、これが帰属の特定と検出を複雑にしています。
さらに、攻撃の範囲も劇的に拡大しました。Shai-Huludは、以前のキャンペーンの20個から、1回の感染で最大100個のnpmパッケージをターゲットとするようになっています。また、一部の侵害されたパッケージにはステージングコードが含まれていましたが、完全なワームペイロードが欠けているものもあり、攻撃者の運用上のミスが一部で影響を限定した可能性も示唆されています。
主要組織への影響
この攻撃により、主要なテクノロジー組織のパッケージが侵害されました。
- AsyncAPI (36パッケージ): @asyncapi/cli、@asyncapi/generatorなど
- PostHog (50+パッケージ): posthog-js、@posthog/nextjsなど
- Zapier (40+パッケージ): @zapier/zapier-sdk、@zapier/ai-actionsなど
- ENS (Ethereum Name Service) (60+パッケージ): @ensdomains/ensjs、@ensdomains/ens-contractsなど
- Postman (35+パッケージ): @postman/postman-collection-forkなど
- Voiceflow (80+パッケージ): @voiceflow/api-sdk、@voiceflow/widgetなど
- その他、500以上の様々なオープンソースおよびユーティリティパッケージ
AsyncAPIチームは、彼らのCLIリポジトリに悪意のあるブランチが作成されたことを確認しており、GitHub認証情報が直接侵害された可能性を示唆しています。1億3200万回のダウンロードが影響を受けていることから、その潜在的な被害範囲は数千もの組織に及び、その多くはシステムがすでにワームに感染していることに気づいていないかもしれません。
サプライチェーン攻撃からの教訓
npmコミュニティの脆弱性は、開発者がすべての推移的なパッケージを監査することが稀であるほど深い依存関係チェーンから部分的に生じています。不適切なシークレット管理と相まって、サプライチェーン攻撃は依然として壊滅的な効果をもたらします。組織は、パッケージのインストールが単なる管理作業ではなく、積極的な脅威監視と認証情報保護を必要とする重要なセキュリティイベントであることを認識する必要があります。
元記事: https://gbhackers.com/sha1-hulud-attack-hits-800-npm-packages/
