何者かがJscramblerのnpmパッケージを侵害し、隠された、クロスプラットフォーム対応の認証情報窃取ペイロードを含む複数のトロイの木馬化バージョンを公開しました。
この攻撃は開発者、ビルドパイプライン、CI/CDシステムを標的としており、npmインストールを通じてソースコード、クラウド認証情報、デプロイトークン、機密性の高い環境変数にアクセスできる状態でした。
Jscramblerのnpmサプライチェーン攻撃
Socketの調査チームが検知したところによると、最初の悪意あるリリースである[email protected]は、2026年7月11日の公開からわずか6分で検出されました。このパッケージの週間ダウンロード数は約15,800件に上ります。
この初期バージョンには、npmインストール処理中に自動的にnode dist/setup.jsを実行する、文書化されていないpreinstallライフサイクルフックが仕込まれていました。つまり被害者は、ペイロードを実行させるためにパッケージをインポートしたり、Jscramblerのコマンドラインツールを手動で呼び出したりする必要すらなかったということです。
この悪意あるローダーは、dist/intro.jsという名前に偽装されたバイナリコンテナを読み込み、被害者のOSに応じて埋め込まれた実行ファイルを選択し、一時ディレクトリ内のランダムな名前を持つ隠しファイルからひそかに起動していました。このコンテナには、Linux x86-64、Windows x86-64、Apple SiliconのmacOSシステム向けのネイティブペイロードが含まれていました。
この攻撃キャンペーンはその後、Jscramblerのバージョン8.16.0、8.17.0、8.18.0、8.20.0にも拡大しました。バージョン8.14.0、8.16.0、8.17.0では悪意あるpreinstallフックが使われていましたが、それ以降のリリースでは配信方法が変更されています。
バージョン8.18.0からは、攻撃者はインストールフックを取り除き、dist/index.jsとdist/bin/jscrambler.jsに自己実行型のドロッパーを注入するようになりました。これにより、アプリケーションがこの依存パッケージをインポートするか、そのCLIを実行した際にマルウェアが動作する仕組みです。この手法は、npm install --ignore-scriptsのような制御や、ライフサイクルスクリプトのみに着目したスキャナーを回避できてしまいます。
バージョン8.18.0と8.20.0では、侵害されたJscramblerのリリースへの自己依存も宣言されており、推移的な感染拡大を可能にする恐れがありました。
Rustベースのこれらのペイロードは、設定情報や検出対象を隠すために、個別に暗号化されたChaCha20-Poly1305形式の文字列を使用しています。Socketは約2,421件の暗号化された文字列を復元し、広範なデータ窃取機能を明らかにしました。
このマルウェアは、AWS、Google Cloud、Microsoft Azureを含むクラウド環境を標的としています。クラウドメタデータサービスのトークン、ローカルのCLI認証情報、サービスアカウントファイル、AWS Secrets Managerのデータ、SSMパラメータストアの値、Azureの管理トークンを探索します。
CloudStorage
さらに、MetaMask、Trust Wallet、Coinbase Wallet、Phantom、Exodusから暗号資産ウォレットのデータを盗み出そうとします。標的となるものには、ウォレットのシードフレーズ、リカバリーフレーズ、保管データ、鍵導出パラメータなどが含まれます。
注目すべきは、このペイロードがClaude Desktop、Cursor、Windsurf、Factory、Zed、VS Codeなどの開発ツールにおいて、AIコーディングアシスタントやMCPサーバーの設定ファイルも探索する点です。こうしたファイルにはAPIキー、内部サービスのURL、Model Context Protocolの認証情報が含まれる場合があります。
このマルウェアはさらに、ブラウザのデータやDiscord、Slack、Telegram、Steamといったアプリケーションも標的にします。また、FirefoxやChromiumベースのブラウザのプロファイル、システムのキーリング、開発者の秘密情報も調査対象です。静的解析により、マルチパートPOSTの/uploadリクエストを用いたTLSベースの情報窃取が確認されています。
各組織は直ちに、影響を受けたバージョンのインストール状況を確認し、これを削除するとともに、侵害された開発者端末やCIシステムを通じて漏洩した可能性のあるすべての秘密情報をローテーションすべきです。これにはnpmトークン、クラウドキー、GitHubトークン、デプロイ認証情報、APIキー、暗号資産ウォレットの認証情報が含まれます。
Jscramblerは、npm公開用の認証情報を通じて不正な公開が行われたことを確認しました。同社は該当する認証情報を失効・ローテーションし、悪意あるバージョンを非推奨とした上で、安全であるとされる[email protected]をリリースしました。利用者はバージョン8.22.0にアップグレードするか、他の安全性が確認済みのリリースに固定することが推奨されます。
侵害指標(IOC)
注: 誤ってアクセスやリンクが解決されることを防ぐため、IPアドレスとドメインは意図的に無害化表記(例: [.])としています。再有効化はMISP、VirusTotal、SIEMなど、管理された脅威インテリジェンスプラットフォーム内でのみ行ってください。
| IOCの種類 | 指標 |
|---|---|
| 悪意あるパッケージ | [email protected], 8.16.0, 8.17.0, 8.18.0, 8.20.0 |
| 安全なリリース | [email protected] |
| 悪意あるローダー | dist/setup.js |
| バイナリコンテナ | dist/intro.js |
dist/setup.js SHA-256 |
a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60 |
dist/intro.js SHA-256 |
a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86 |
| Linux ELF SHA-256 | fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd |
| Windows PE SHA-256 | b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903 |
| macOS Mach-O SHA-256 | c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd |
Windows、Linux、macOSの仮想マシンでサイバー脅威を実際に操作し、攻撃の全体像を再現 - ANY RUNでマルウェアとフィッシングを分析
翻訳元: https://gbhackers.com/jscrambler-npm-supply-chain-attack-steals-cloud-credentials/