2026年4月21日から4月23日にかけて、npm サプライチェーン攻撃は単発の悪性パッケージ混入ではなく、自己増殖するワームとして観測された。CanisterSprawl(別名CanisterWorm)は、開発者端末やCI環境でpostinstallを起点に認証情報を収集し、取得した公開トークンを使って新たな悪性版を自動公開することで、依存グラフを横断して感染を広げる設計である。本稿は、公開情報に基づき48時間の連鎖侵害を時系列で整理し、AIエージェント時代に必要な多層防御設計を提示する。
48時間連鎖侵害の時系列: 2026年4月21日-23日
StepSecurityの分析では、pgserveの悪性版(1.1.11/1.1.12/1.1.13)が2026年4月21日にnpmへ公開され、postinstall経由で認証情報窃取が実行された。さらに同社は4月22日に検知・封じ込めを公表し、同時期にPyPI側でもxinference 2.6.0/2.6.1/2.6.2の悪性版が確認された。
GitGuardianは4月21日から23日にかけ、npm・PyPI・Docker Hubの3面で連続する供給網攻撃を整理している。攻撃群は同一IOCではないが、いずれも開発環境・CI/CDからの秘密情報奪取を主目的にしていた点で一致する。CanisterSprawlはこの連鎖の中で、自己増殖能力を持つ点が特に異質であった。
CanisterSprawlの自己増殖メカニズムとICP Canister C2
CanisterSprawlの中核は、npm install時の実行フックとトークン再利用にある。StepSecurityによれば、感染したpgserveは環境変数・ローカル資格情報・各種設定ファイルを探索し、取得情報を外部へ送信する。送信先の一つとしてInternet Computer Protocol (ICP) canisterが使われ、一般的なドメイン停止に依存する遮断を回避しやすい構成であった。
GitGuardianは、この系統の攻撃をSocketとStepSecurityがCanisterSprawlとして追跡していると整理し、pgserveに加えNamastex系npmパッケージ(例: @automagik/genie)への波及を報告している。つまり、単一パッケージ侵害ではなく「奪取した公開権限を次の感染に使う」ワーム型ループが成立していたということである。
なぜ検知後も拡散が止まりにくいのか
今回の事案は、SocketおよびStepSecurityの検知が機能していても、拡散が即時停止しないことを示した。理由は3つある。第一に、攻撃の実行点がinstall時であり、CIジョブやローカル端末で既に実行済みのケースを遡及的に止めにくい。第二に、窃取済みトークンで短時間に複数パッケージへ再公開されるため、テイクダウン速度が増殖速度に追いつきにくい。第三に、依存関係の自動更新(Dependabot等)とAIエージェントのツール呼び出しが、攻撃対象面を同時多発的に広げる。
特にAIエージェント開発では、CLI・SDK・プラグインを横断して短周期で導入する傾向が強く、署名・由来検証・実行時制限のいずれか1層でも欠けると、ワーム型攻撃に対する防御深度が急激に低下する。
実務向け多層防御設計(npm サプライチェーン攻撃対策)
対策は「公開権限の最小化」と「実行時封じ込め」を分離して設計すべきである。第一に、npmトークンを長期固定で配布せず、OIDCベースのTrusted Publishingへ移行して漏えい価値を下げる。第二に、postinstall等のライフサイクルスクリプトをCIで監査し、初見スクリプト追加をブロックする。第三に、公開前後でProvenance(由来証明)とメンテナータグ整合を検証し、タグ無し突発リリースを自動隔離する。第四に、開発端末とCIで秘密情報の到達範囲を分離し、たとえ侵害パッケージが実行されても横展開できない境界を作る。
2026年4月21日-23日の連鎖侵害は、パッケージレジストリの脆弱性が「検知不足」だけでなく「権限設計と依存運用の構造問題」であることを明確化した。今後の重点は、脆弱パッケージを探すことに加え、侵害後の自己増殖ループを成立させない公開基盤へ移行できるかにある。
FAQ
CanisterSprawlは通常の悪性npmパッケージと何が違うか?
単発の情報窃取で終わらず、窃取した公開トークンを使って別パッケージに自分自身を再注入し、公開連鎖を作る点が異なる。すなわち感染先が次の配布拠点になるワーム型である。
なぜICP canisterがC2に使われると厄介なのか?
従来のドメイン停止中心の対処が効きにくく、通信遮断・実行遮断・資格情報失効を同時に進めないと封じ込めが遅れるためである。
npm利用組織が最初にやるべき対処は何か?
影響バージョンの利用停止、npmトークンの全面ローテーション、CIシークレットの再発行、直近公開パッケージの不審差分監査を同日中に行うべきである。
AIエージェント開発では何を追加すべきか?
エージェント実行環境を短命化し、外部パッケージ導入時に由来検証とネットワーク最小権限を強制する。自動修復より先に実行制御を設計することが有効である。
参考文献
- CanisterSprawl: pgserve Compromised on npm: Malicious Versions Harvest Credentials and Exfiltrate to a Decentralized ICP Canister — StepSecurity, 2026-04-21
- CanisterWorm: How a Self-Propagating npm Worm Is Spreading Backdoors Across the Ecosystem — StepSecurity, 2026-04(公開ページ)
- No Off Season: Three Supply Chain Campaigns Hit npm, PyPI, and Docker Hub in 48 Hours — GitGuardian, 2026-04-24
- TeamPCP Injects Two-Stage Credential Stealer into xinference PyPI Package — StepSecurity, 2026-04-22
- Trusted publishing with OIDC — npm Docs, 参照 2026-04-26

