開発者を標的とするサプライチェーン攻撃:Next.js を悪用して偽装リポジトリを展開

Microsoft Warns of Hackers Attacking Developers with Malicious Next.js Repositories

2026/02/25 CyberSecurityNews — 正規の Next.js プロジェクトや技術評価資料を装う悪意のリポジトリを通じて、組織的かつ協調的な攻撃キャンペーンが進行中であり、ソフトウェア開発者たちが標的にされている。 攻撃者は求人をテーマとした偽装の手法を用い、偽の採用課題を提示することで開発者を誘導し、そのマシン上で改竄されたコードをクローン/実行させる。開発者がプロジェクトを実行すると、攻撃者が制御する Command-and-Control (C2) インフラへ密かに接続され、開発者のシステムおよび保存済みの機微データへのリモート・アクセスが許可される。

このキャンペーンの影響を受けた開発者の端末上の、Node.js プロセスから発信される不審なアウトバウンド接続が発見された。これらのプロセスが、既知の悪意の C2 IP アドレスへの接続を繰り返していたことから、その背後にある実行チェーンの詳細な調査へとつながった。 

ネットワーク活動とプロセス・テレメトリの相関分析により、Node.js の実行プロセスから悪意のリポジトリへと、アナリストたちは調査を進めていった。その中に含まれるものには、Bitbucket 上で人材採用テーマの技術評価を装うリポジトリや、Cryptan-Platform-MVP1 という命名規則を持つ別のリポジトリがある。

Microsoft Defender Experts と Microsoft Defender Security Research Team は、共有コード構造/ローダー・ロジック/命名パターンを軸としたピボット分析により、関連するリポジトリなどから悪意のクラスターを特定するに至った。そこで判明したのは、Cryptan/JP-soccer/RoyalJapan/SettleMint などのリポジトリ・ファミリーは、v1/master/demo/platform/server といったラベルを持つ、ほぼ重複するバリアントを保持することだった。 

この一貫した構造により、観測済みのテレメトリには現れなくても、同一の実行ロジックおよびステージング・インフラを共有する追加のリポジトリが特定された。

このキャンペーンの規模は、企業環境で活動する開発チームにとって、きわめて危険なものである。開発者の端末は、ソース・コード/環境シークレット/クラウド API キー/データベース認証情報/ビルド・パイプラインなどの高価値資産へ日常的にアクセスする。したがって、信頼されないコードが企業デバイス上で実行された場合には、単一のエンドポイントへの侵害が、組織全体のインフラ露出へと急速に拡大する可能性がある。 

このキャンペーンが示すのは、ソフトウェア・サプライ・チェーンに攻撃者たちがアプローチする手法における計算された転換点である。正常なプロジェクトに見える形で悪意の機能を埋め込み、日常的な開発ワークフローへ溶け込むことで、確度の高いコード実行を達成する。

3 つの侵入経路と 1 つの共通バックドア

このキャンペーンにおける 3 つの実行経路は、攻撃者が制御する JavaScript のランタイムでの取得とメモリ内での実行という同一の結果に至る。

第 1 の経路は Visual Studio Code の、ワークスペース自動化を悪用するものだ。開発者がプロジェクト・フォルダを開くと、”.vscode/tasks.json” に設定された runOn: “folderOpen” 設定により Node.js スクリプトが即時実行され、Vercel がホストするステージング・エンドポイントから JavaScript ローダーが取得される。このローダーの実行により、攻撃者が制御するインフラへのビーコン送信がスクリプトにより開始される。

Telemetry showing a VS Code-adjacent Node script initiating outbound access to a Vercel staging endpoint (Source - Microsoft)
Telemetry showing a VS Code-adjacent Node script initiating outbound access to a Vercel staging endpoint (Source – Microsoft)

第 2 の経路は、開発者が npm run dev を使用して、開発サーバを起動する際に発火する。改変された “jquery.min.js” などの RAT アセットが Base64 エンコードされた URL を復号し、Vercel から同一の JavaScript ローダーを取得する。

Telemetry showing node server - server.js reaching out to a Vercel-hosted staging endpoint (Source - Microsoft)
Telemetry showing node server – server.js reaching out to a Vercel-hosted staging endpoint (Source – Microsoft)

第 3 の経路は、サーバの起動時に発火する。悪意のバックエンド・ルートが “.env” ファイル内の隠し Base64 エンコード・エンドポイントを復号し、クラウド API キーやアクセス・トークンを含む完全なプロセス環境を、攻撃者に向けて送信する。その後に、動的コンパイルにより、攻撃者が提供する JavaScript が実行される。

Backend server startup path where a module import decodes a base64 endpoint (Source - Microsoft)
Backend server startup path where a module import decodes a base64 endpoint (Source – Microsoft)

いずれかの経路が作動すると、軽量な Stage 1 ペイロードがホスト情報のプロファイリングを開始し、固定間隔で C2 サーバへポーリングする。

Stage 1 registrar payload retrieved at runtime and executed by Node.js (Source - Microsoft)
Stage 1 registrar payload retrieved at runtime and executed by Node.js (Source – Microsoft)

続いて Stage 2 が発動し、永続的タスク実行/ディレクトリ参照/機微ファイル収集/窃取データの段階的アップロードなどが、オペレーター主導により実行される。

Stage 2 staged upload workflow observed in telemetry (Source - Microsoft)
Stage 2 staged upload workflow observed in telemetry (Source – Microsoft)


開発者にとって必要なことは、Visual Studio Code の Workspace Trust および Restricted Mode を有効化し、未知のフォルダでの自動コード実行を防止することである。ユーザー組織は、難読化されたスクリプトの実行を防止するための 攻撃対象領域削減ルールを適用し、開発者アカウントに対して強力な認証および条件付きアクセスを実装し、本番環境の認証情報を、開発端末に保存しないという運用を徹底すべきである。 

セキュリティ・チームは DeviceNetworkEvents/DeviceProcessEvents のハンティング・クエリを用いて Node.js からの異常なアウトバウンド接続を監視し、開発者エンドポイント侵害が疑われる場合には、ID のトリアージを実施すべきである。