概要

2026年5月18日、VS Code拡張機能「Nx Console」のバージョン18.95.0が悪意のあるコードを含む状態でVS Code Marketplaceに公開された。Nx Consoleは220万以上のインストール数を持つ人気の拡張機能で、開発者のワークフローに深く組み込まれていることが攻撃者に狙われた。悪意あるバージョンが公開されたのは12:36〜12:47 UTC(わずか11分間)で、Nxチームが迅速に検出・削除したが、その間に6,000件以上のインストールが発生した可能性があるとチームは後日開示している。攻撃の起点は、貢献者のGitHub認証情報の漏洩であった。

攻撃の手口と技術的詳細

攻撃者はまず2026年5月18日03:18 UTCに、窃取した貢献者の認証情報を使ってnrwl/nxリポジトリに対してオーファンコミット(親履歴のない孤立したコミット)をプッシュした。このコミットには498 KBの難読化されたJavaScriptペイロードが含まれていた。続いて12:36 UTCに、侵害されたパブリッシュ用認証情報を使い、悪意あるバージョン18.95.0をマーケットプレイスに公開した。

侵害されたバージョンのmain.jsには、わずか2,777バイトの注入コードが含まれており、ワークスペースを開いた際に自動的に起動する。このコードはGitHub上のオーファンコミットから498 KBの難読化ペイロードをダウンロードし、BunランタイムでJavaScriptを実行する仕組みで、バックグラウンドプロセスとして分離実行することで検出を回避していた。

ペイロードが標的とする認証情報は幅広く、GitHub・npm・AWSの認証情報、HashiCorp Vaultトークン、Kubernetesシークレット、1Passwordボールト、そしてClaude Codeの設定ファイルも含まれていた。Linuxでは/proc/*/memへの直接アクセス、AWSメタデータエンドポイント(169.254.169.254)やECSコンテナエンドポイントも調査の対象とされた。

窃取されたデータはAES-256-GCM暗号化とRSA公開鍵ラッピングで二重に保護された上で、HTTPS・GitHub API悪用・DNSトンネリングという3つの独立した経路で外部に送信された。

巧妙な持続化・回避機能

macOS環境では、~/.local/share/kitty/cat.pyにPythonバックドアが設置され、4096ビットRSA鍵で署名の上、GitHub API検索を通じて1時間ごとにコマンドを受け取るよう設計されていた。また、解析回避のための仕組みも組み込まれており、CPUコア数が4未満の環境やロシア・CISのタイムゾーンを使用する環境では実行をスキップするようになっていた。これにより研究者のサンドボックスを避けながら、本番環境の開発者マシンを効果的に標的にしていた。

さらに深刻なのは、ペイロードにSigstoreの完全な統合機能が含まれていた点だ。これにより攻撃者はFulcio証明書の発行とSLSAプロベナンス生成を使って、悪意あるnpmパッケージを正当な暗号署名付きで公開できる状態にあった。サプライチェーン攻撃の連鎖的な拡大を狙った、非常に高度な準備がなされていたことが分かる。

推奨される対応策

Nxチームはバージョン18.100.0以降への更新と、影響を受けた可能性のある全認証情報のローテーションを強く推奨している。具体的には、クラウドトークン・GitHub PAT・npmトークン・SSHキーをすべて無効化・再発行し、macOSユーザーは~/.local/share/kitty/cat.pyおよび関連するLaunchAgentを削除する必要がある。12:36〜12:47 UTCの間に当該バージョンをインストールした開発者は、該当マシンのすべての認証情報を侵害済みとして扱うべきだ。