正規npmアップデートがマルウェア配信経路に―S1ngularity・Shai-Hulud・TeamPCPに共通するサプライチェーン攻撃

セキュリティニュース

投稿日時: 更新日時:

正規npmアップデートがマルウェア配信経路に―S1ngularity・Shai-Hulud・TeamPCPに共通するサプライチェーン攻撃

ReversingLabsは2026年9月30日、2025年後半から2026年に発生したS1ngularity、Shai-Hulud、TeamPCPによるソフトウェアサプライチェーン攻撃を振り返る調査を公開しました。

結論として、近年のnpmを狙う攻撃では「悪意ある新規パッケージを公開する」だけでなく、正規の開発プロジェクトや公開権限を奪い、利用者が通常のアップデートとして取り込む経路そのものをマルウェア配信に利用する手口が繰り返されています。

攻撃者はGitHub ActionsなどのCI/CD設定や公開用トークン、開発者の認証情報を侵害し、正規パッケージの悪性バージョンを公開します。さらに、インストール先からnpmトークンやクラウド認証情報などを盗み、その認証情報を次のパッケージ侵害に使うことで被害が連鎖します。

なお、ReversingLabsは2025年のS1ngularityと初期Shai-Huludについて、2026年に活動したTeamPCPと明確に同一の攻撃者とはしていません。3事例は、攻撃主体ではなく「正規のソフトウェア更新と公開権限を悪用する」という共通した攻撃モデルとして見る必要があります。

npmサプライチェーン攻撃のサマリー

  • ReversingLabsは2026年9月30日、S1ngularity、Shai-Hulud、TeamPCPを対象としたサプライチェーン攻撃の回顧調査を公開しました。
  • S1ngularityでは2025年8月26日、NxのGitHub Actionsに存在した問題を起点にnpm公開用トークンが窃取され、悪性バージョンが約4時間公開されました。
  • 悪性Nxパッケージは端末内の認証情報やトークン、SSHキーなどを探索し、取得した情報を公開GitHubリポジトリへ送信しました。
  • S1ngularityでは端末上のClaudeやGeminiなどのAIツールを利用し、機密情報が存在するファイルを探そうとするコードも確認されました。
  • Shai-Huludはnpm公開用トークンを窃取し、権限を持つ別のパッケージへ自らを再公開する自己増殖機能を持っていました。
  • TeamPCPは2026年、Trivy、Checkmarx、LiteLLM、Telnyxなど開発・セキュリティツールのサプライチェーンを相次いで侵害しました。
  • ReversingLabsによると、TeamPCPのCanisterWormはTrivy侵害で取得したnpmトークンを利用し、60件超のnpmパッケージへ攻撃を広げました。
  • オーストラリア連邦警察(AFP)はTeamPCP関連の捜査について、1,000組織超が潜在的に侵害され、50万件超の認証情報、少なくとも300GBのデータが窃取されたと推定しています。
  • 対策では、長期間利用できるnpm公開トークンを減らし、OIDCを利用するTrusted Publishingへ移行することが有効です。
事例 時期 主な起点 侵害後の動き
S1ngularity 2025年8月 NxのGitHub Actions/公開トークン 悪性npm公開、認証情報探索、GitHubへのデータ送信、AIツール利用
Shai-Hulud 2025年9月以降 npm公開用認証情報 トークン窃取、別パッケージへの自己再公開
TeamPCP 2026年 開発・セキュリティツール、CI/CD、窃取済み認証情報 Trivy、Checkmarx、LiteLLM、Telnyxなどへ連鎖、認証情報窃取

正規のアップデートが攻撃経路になる

今回の3事例に共通するのは、利用者へ「不審なパッケージをインストールさせる」ことが中心ではない点です。

攻撃者は、すでに利用者から信頼されているOSSプロジェクトや公開パイプラインを侵害し、その正規パッケージ名のまま悪性バージョンを公開します。

利用企業側では通常の依存関係更新やCI/CD処理としてインストールされるため、開発者が攻撃者のサイトへアクセスしたり、不審なファイルを手動実行したりしなくても侵害につながる可能性があります。

これはサプライチェーン攻撃の中でも、ソフトウェアの開発・公開・更新プロセスそのものを攻撃経路にする手法です。

ReversingLabsは、長期間利用できる公開用トークンや、過剰な権限を持つCI/CDワークフローが侵害された場合、正規の配布経路から悪性アップデートを公開できる点を問題として挙げています。

S1ngularityではNxのnpm公開トークンを窃取

S1ngularityは2025年8月26日、JavaScript/TypeScript向けビルドシステム「Nx」を標的に発生しました。

Nxの公式ポストモーテムによると、攻撃者はGitHub Actionsのインジェクション問題を悪用してnpm公開用トークンを窃取し、複数のNx関連パッケージの悪性バージョンを公開しました。

悪性バージョンは約4時間npm上で配布されました。

インストール時に実行されるpostinstallスクリプトは、端末上からGitHubやnpmの認証情報、クラウド認証情報、SSHキーなどを探索し、取得した情報を被害者自身のGitHubアカウント上に作成した公開リポジトリへ送信しました。

リポジトリ名には「s1ngularity-repository」が含まれており、攻撃者が収集対象を見つけやすい構成になっていました。

さらにReversingLabsは、悪性コードが被害端末上のAIツールへ指示を出し、機密情報を含む可能性のあるファイルを探索させる処理も確認しています。

Nxは事案後、npmへの公開方式を長期間有効なトークンからTrusted Publishingへ移行し、リリース時の手動承認などを追加しました。

Shai-Huludは盗んだnpmトークンで自己増殖

2025年9月に確認されたShai-Huludでは、認証情報窃取に加えて「次の正規パッケージを自動的に侵害する」機能が組み込まれました。

Shai-Huludは感染環境からnpm公開用トークンを探索し、そのトークンで公開権限を持つパッケージを特定します。

取得した権限を使って悪性バージョンを公開することで、攻撃者が1件ずつ手動でパッケージを侵害しなくても感染範囲を広げられます。

ReversingLabsは、この自己増殖性がShai-Huludの大きな特徴だとしています。

セキュリティ対策Labでも、2026年5月に発生したShai-HuludによるAntVエコシステムへのnpmサプライチェーン攻撃を取り上げています。

TeamPCPはTrivyからCheckmarx・LiteLLM・Telnyxへ連鎖

2026年にはTeamPCPが、同様の認証情報窃取とソフトウェア公開経路の侵害を複数の開発ツールへ展開しました。

ReversingLabsによると、TeamPCPは脆弱性スキャナーTrivyへの侵害を起点に、その後CheckmarxのツールやLiteLLM、Telnyxへ攻撃を広げています。

LiteLLMではPyPIのバージョン1.82.7と1.82.8が侵害され、ファイルやプロセスメモリから幅広いシークレットを窃取するインフォスティーラーが組み込まれました。

さらにTeamPCPはCanisterWormを展開し、Trivy侵害で取得したnpmトークンを使って60件超のnpmパッケージを侵害したとReversingLabsは報告しています。

セキュリティ対策Labでは、FBIが公開した警戒情報を基に「TeamPCPのサプライチェーン攻撃とTrivy・KICS・LiteLLM侵害」でIOCや具体的な対策を整理しています。

AFPは1,000組織超、50万件超の認証情報への影響を推定

オーストラリア連邦警察は2026年8月、TeamPCPに関連するとされる2人を逮捕・起訴したと発表しました。

AFPは、このサプライチェーン攻撃で悪性コードが世界の1,000組織超を潜在的に侵害し、50万件超の認証情報が窃取され、少なくとも300GBのデータが外部へ持ち出されたと推定しています。

また、世界全体の復旧費用は数億ドル規模に達する可能性があるとしています。

これらは捜査当局による推定値であり、すべての組織で同じ被害が確認されたことを意味するものではありません。

ただし、少数のOSSや開発ツールの侵害が、多数の下流利用者へ広がるソフトウェアサプライチェーン攻撃の波及範囲を示す数字です。

S1ngularity・Shai-Hulud・TeamPCPを同一攻撃者とは扱わない

CyberPressの記事では3つの事例が連続して紹介されていますが、攻撃主体は区別する必要があります。

ReversingLabsは、2025年のS1ngularityと初期Shai-HuludについてTeamPCPによる攻撃とは明確に帰属していません。

一方、2026年に公開されたMini Shai-HuludはTeamPCPとの関連が確認されており、同グループは類似する自己増殖型の手法を利用しています。

したがって、これらを「TeamPCPが2025年から一貫して実行した攻撃」とまとめるのではなく、

  • CI/CDや公開用トークンを侵害する
  • 正規パッケージの悪性アップデートを公開する
  • インストール先から新たな認証情報を盗む
  • 盗んだ公開権限から次のパッケージを侵害する

という攻撃モデルが継承・発展していると見るのが適切です。

情報システム・開発部門が確認したいポイント

今回の事例では、悪性パッケージを削除するだけでは対応が完了しません。

悪性バージョンが開発端末やCI/CDランナーで一度でも実行された場合、npmトークン、GitHubトークン、クラウド認証情報、SSHキーなどが取得された前提で影響を確認します。

特に確認したいのは次の点です。

  • 影響を受けたパッケージとバージョンを利用していないか
  • CI/CD、開発端末、ビルド環境に保存されていた認証情報をローテーションしたか
  • npmやPyPIへの公開権限を持つアカウントを必要最小限にしているか
  • GitHub Actionsなどのワークフローへ過剰な読み書き権限を与えていないか
  • 新しい依存関係・更新を自動的に本番へ取り込む構成になっていないか
  • ソフトウェアの構成と依存パッケージを追跡できる状態になっているか

自社製品やシステムにどのOSS・依存パッケージが含まれているかを把握する方法として、SBOM(Software Bill of Materials)を利用できます。

またnpmは、GitHub Actionsなどからパッケージを公開する場合、長期間利用できるnpmトークンの代わりにOIDCを利用するTrusted Publishingを提供しています。

Trusted Publishingでは、特定のCI/CDワークフローとnpmの間に信頼関係を設定し、公開時ごとに短時間だけ有効な認証情報を使用します。NxもS1ngularityの事案後にこの方式へ移行しました。

正規パッケージの更新だから安全と判断するのではなく、「誰が、どのワークフローから、どの認証方式で公開したアップデートなのか」まで確認できる仕組みが、ソフトウェアサプライチェーン対策の対象になります。

出典