npm で発生したサプライチェーン攻撃:タイポスクワッティングと認証トークン窃取

Threat Actors Hijack Popular npm Packages to Steal The Project Maintainers’ npm Tokens

2025/07/22 CyberSecurityNews — 広く使用される eslint-config-prettiereslint-plugin-prettier などの、複数の npm パッケージが高度なサプライチェーン攻撃により侵害された。この攻撃の原因は、標的型フィッシング攻撃による、メンテナーの認証トークンの窃取にある。この攻撃で用いられたドメイン npnjs.com は、正規の npmjs.org サイトを模倣するものであり、精巧に設計されたフィッシング・メールを通じて、開発者の認証情報を収集するタイポスクワッティング攻撃が仕掛けられた。

この攻撃が示すのは、npm エコシステムに内在する信頼を悪用する、多段階のサプライチェーン侵害である。

最初に攻撃者は、高度なフィッシング・メールを通じてメンテナーの認証情報を収集する。それに続いて、盗んだトークンを使用することで、GitHub リポジトリには変更を加えることなく、悪意のパッケージ・バージョンを npm リポジトリにダイレクトに公開した。それにより、従来の監視方法では、攻撃の検出が困難になった。

Lists of package maintainers (Source – Socket.dev)

GitHub 上で人気を博すパッケージの複数バージョンが、対応するコミットやプルリクエストなしに公開されているという、不審な活動報告を受けた Socket.dev の研究者たちが、この侵害を特定した。

影響を受けたパッケージには、eslint-config-prettier のバージョン 8.10.1/9.1.1/10.1.6/10.1.7 および、eslint-plugin-prettier のバージョン 4.2.2/4.2.3、synckit の 0.11.9、@pkgr/core の 0.2.8、そして、napi-postinstall の 0.3.1 が含まる。

これらの悪意のコードは、リモート・コマンド実行を目的とする危険なペイロードを備えており、特に Windows システムを標的としていた。

研究者たちによる分析の結果として判明したのは、挿入されたコードにより Windows の rundll32 ユーティリティを悪用し、node-gyp.dll という DLL ファイルを読み込み、実行しようとする、侵害チェーンである。

この侵害チェーンを仕掛ける攻撃者は、システムへの完全なアクセス権を取得し、侵害したマシン上での任意のコード実行を可能にするという。

感染メカニズム

この攻撃の巧妙さは、npm のメタデータ・アクセスを悪用する点にある。この機能を用いる脅威アクターは、登録メール・アドレスやメンテナー情報を容易に収集し、包括的な標的リストを作成できる。

また、展開された悪意のペイロードは、Windows 固有の実行手法を採用しており、以下のコード・パターンを用いていた。

// Simplified representation of malicious code injection
process.platform === 'win32' && require('child_process').exec('rundll32 node-gyp.dll,entrypoint');

このアプローチを用いるマルウェアは、永続性とリモート・コード実行機能を実現するが、Windows 以外のシステムでは休眠状態を維持する。この設計が示すのは、クロス・プラットフォーム開発環境に対する攻撃者の十分な理解である。それにより、開発エコシステム全体における検出を最小限に抑えながら、影響を最大化する、標的型ペイロードの作成に成功している。