Harness(ハーネス)レポート:ミニシャイフルードワームがオープンソースのエコシステムを襲撃

Harness(ハーネス)レポート:ミニシャイフルードワームがオープンソースのエコシステムを襲撃

Harness(ハーネス)は、シャイフルードサプライチェーンワームの新たな波(現在はミニシャイフルードと名付けられている)が、より軽量で高速かつ自動化された機能を備えて再び出現し、複数のエコシステムにわたる広く使用されているオープンソースパッケージを侵害していると報告した。この攻撃は、tanstack、uipath、opensearch-project、mistralaiなどのパッケージに影響を与えたとされ、2026年5月19日にはopenclaw-cnとantvのパッケージを標的とした一連の追加侵害が注目された。

この事件は、現代のソフトウェア開発における信頼モデルの重要性を改めて認識させるものとして捉えられた。現代のソフトウェア開発では、アプリケーションは自動化されたCI/CDパイプラインを通じて、日常的に数百ものサードパーティー製依存関係を利用している。アナリストらは、この依存関係チェーンが悪用され、悪意のあるコードが信頼できるアップデートとして配信されることで、攻撃対象領域が単一の侵害された資産にとどまらず拡大する可能性があると指摘した。

技術分析によると、このマルウェアはnpmパッケージのインストール中に自動的に実行され、開発者マシンやCI/CD環境から認証情報を収集し、盗んだ公開認証情報を悪用してさらに悪意のあるリリースを拡散していた。セキュリティー研究者らは、ミニシャイフルードの亜種におけるいくつかの技術的進歩を指摘しており、難読化されたローダーと段階的なペイロード配信、Node.jsに特化した検出を回避するためのBunなどの代替ランタイムの使用、IDEやエディターとの統合による永続化の試み、npm、PyPI、RubyGems全体でペイロードを適応させるための環境フィンガープリンティングなどが挙げられる。

調査官らは、このワームが複数のクレデンシャルソース(メンテナートークン、GitHubセッション、CIシークレット、公開認証情報)を悪用し、信頼できるGitHub ActionsリリースパイプラインとOIDCベースの公開フローも侵害したと指摘した。この組み合わせにより、悪意のあるパッケージが有効な出所証明を付与できるようになり、出所チェックに依存するチームの検出が困難になったと報告されている。このキャンペーンは分散型で自己増殖型であり、パッケージマネージャー間で横方向に移動し、単一の「発生源」はなく、2026年5月19日になっても新しいエクスプロイトチェーンが特定され続けていた。2026年5月11日のTanStack侵害は、この波の中で最も影響力の大きい事例の1つとして挙げられた。

アナリストがまとめたタイムラインによると、この攻撃ファミリーは2025年9月に遡り、その年にオリジナルのシャイフルードワームがnpmを襲撃し、200以上のパッケージが侵害された。2025年12月に更新された亜種は、著名なプロジェクトのメンテナーを標的にし、その後の事件には、2026年3月31日のaxiosの侵害、2026年4月29日のSAPパッケージの一時的な汚染、2026年5月11~12日の大規模なクロスエコシステム攻撃(npmとPyPI全体で172のパッケージに影響)、5月12日のRubyGemsへの大量攻撃(レジストリーに数百の悪意のあるアップロードが殺到し、新規登録の一時停止を招いた)などが含まれる。5月19日の再出現では、AntVとOpenClaw-CNエコシステムのコンポーネントを含む、300以上のnpmパッケージが影響を受けた。

TanStackの脆弱性を悪用した攻撃は、単純な悪意のあるコミットではなく、CI/CDインフラストラクチャーに対する攻撃であると研究者によって詳細に説明された。攻撃者は、難読化された2.3MBのペイロードと、Bunベースのprepareフックを介してペイロードを呼び出すパッケージマニフェストを含む孤立したコミットを準備したと報告されている。その後、pull_request_targetトリガーを使用したプルリクエストによって、脆弱なバンドルサイズのワークフローがベースリポジトリーの権限で実行され、攻撃者はGitHub Actionsランナー上のpnpm依存関係ストアを変更できるようになった。Actions/cacheは、汚染されたpnpmストアを共有リポジトリーキャッシュにアップロードしたとされている。攻撃者は、汚染されたキャッシュを最新の状態に保つためにプルリクエストに繰り返しプッシュし、その後、目に見える変更を隠すために強制プッシュを行った。

リポジトリーの正規リリースワークフローが後に汚染されたキャッシュを復元した際、調査官は、注入されたバイナリーが公式ランナー内で実行され、/proc//memの手法を用いてプロセスメモリーからOIDCトークンを抽出したと報告した。その後、ペイロードはパッケージルートにrouter_init.jsファイルを配置し、孤立したコミットを指すoptionalDependenciesエントリーを追加し、信頼できるワークフローに有効期限の短いnpm公開トークンを要求させ、有効な来歴証明を保持した悪意のあるリリースを公開させた。

公開された悪意のあるTanStackパッケージは、インストール中に孤立したコミットを取得し、tanstack_runner.jsペイロードを実行することが確認された。アナリストは、環境のフィンガープリントを作成し、環境変数、構成ファイル、クラウド認証情報から認証情報を収集し、IDEおよびエディター統合(VS CodeおよびClaude Codeフックを含む)を介して永続化を試み、セッションプロトコルCDNまたはGitHub GraphQL APIを介して機密情報を漏洩させ、公開トークンを見つけると、npm、PyPI、およびその他のレジストリーに侵害されたパッケージを自動的に追加公開する、マルチステージのrouter_init.jsペイロードについて説明した。結果として生じた動作は、侵害されたメンテナーとCI/CDエントリーポイントを介して繰り返し再出現する、ワームのような自己増殖メカニズムとして特徴付けられた。

同時期に発生したRubyGemsのインシデントは、異なる運用パターンに従っていたようだ。研究者らは、自動化されたボットアカウントを通じて数百もの悪意のあるgemがアップロードされていることを確認した。これらのパッケージの多くには、開発者のマシンやCI/CDランナーを標的とした認証情報窃盗コードが含まれていた。RubyGemsは、メンテナーが悪意のあるアップロードを削除する間、新規登録を一時停止したと報じられている。RubyGemsの波は、大量のアカウント作成と一括アップロードに焦点を当てたレジストリーフラッディングキャンペーンとして説明され、一部の調査員は、盗まれた認証情報が数時間以内にランサムウェアグループに送られたと報告している。

影響を受けたアーティファクトには、複数のエコシステムにわたる多数の著名なパッケージとバージョンが挙げられており、例として、tanstackのrouter-core、react-start、historyなどのパッケージ、axiosバージョン1.14.1と0.30.4、opensearch 3.6.2、分析で言及されたmistralaiのバージョン、および各種AntVとOpenClaw-CNコンポーネントなどが含まれる。この攻撃キャンペーンは、本番環境と非本番環境の両方に影響を与え、依存関係の広範な再利用により、影響範囲が拡大したと報告されている。

セキュリティーチームが提供した緩和策ガイダンスは、CI/CDワークフローの強化と、ライフサイクルスクリプトやキャッシュされたアーティファクトによって露出される攻撃対象領域の縮小に重点を置いていた。推奨される対策には、pull_request_targetなどの危険なGitHub Actionsトリガーの使用を避けること、CIでpreinstall、postinstall、prepareなどの不要なnpmライフサイクルフックを無効にすること、パッケージレジストリーとクラウドプラットフォームの認証情報を積極的にローテーションしてスコープを限定すること、依存関係とプロベナンスアテステーションを継続的に監視して異常を検出することなどが含まれていた。依存関係のインベントリー、ポリシーゲートの適用、悪意のあるパッケージの検出、ビルドおよびリリースパイプラインに入る前に侵害されたアーティファクトをブロックするために、ソフトウェア構成分析プラットフォームの使用が推奨された。

HarnessのSCS(サプライチェーンセキュリティー)ソリューションは、リアルタイムのSBOM(ソフトウェア部品表)可視化、依存関係グラフ表示、OPAベースのポリシー適用機能を提供することで、侵害された依存関係を検出・封じ込めるツールとして説明された。この製品により、リポジトリー全体を瞬時に検索して影響を受けるバージョンを特定し、自然言語によるプロンプトを使って悪意のあるパッケージをブロックするポリシーを生成し、開発者と連携して修復の進捗状況を追跡することで、修正が全ての環境とビルドに確実に適用されるようにできるとのことだ。

出典:Harness

この製品の詳細については、Harness製品ページをご覧ください。

You've successfully subscribed to DXable News
Great! Next, complete checkout to get full access to all premium content.
Welcome back! You've successfully signed in.
Unable to sign you in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Billing info update failed.
Dark Light