2025年7月20日、複数のソフトウェア供給連鎖攻撃が報告された。Socketによると、フィッシングメールでnpmトークンを盗まれたプロジェクトメンテナーの管理下にある5つのnpmパッケージに悪意あるバージョンが公開された。
影響を受けたパッケージは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マシンでDLLを実行し、リモートコード実行につながる可能性があった。
攻撃者はnpnjs[.]comというタイポスクワッティングドメインを使用してnpmになりすましたフィッシングメールを送信した。同時期に、Arch Linuxチームは3つのAURパッケージ(librewolf-fix-bin、firefox-patch-bin、zen-browser-patched-bin)を削除した。これらは7月16日にdanikpapasというユーザーがアップロードしたもので、Chaos RATマルウェアをインストールするものだった。
From: Malware Injected into 5 npm Packages After Maintainer Tokens Stolen in Phishing Attack
【編集部解説】
今回のnpm供給連鎖攻撃は、2024年後半から2025年にかけて急増している同種の攻撃の延長線上にある重要な事案です。この攻撃の核心は、開発者の信頼を悪用した巧妙なフィッシング手法にあります。
攻撃者は「npnjs[.]com」というタイポスクワッティングドメインを使用し、正規の「npmjs[.]com」と見分けがつかないフィッシングメールを送信しました。この手法の巧妙さは、開発者が日常的に受け取る正規の通知メールと区別が困難な点にあります。
この事案の技術的な深刻さは、GitHubリポジトリへの痕跡を一切残さずに悪意あるパッケージを公開できた点にあります。通常の開発プロセスでは、コードの変更はGitHub上でコミットやプルリクエストとして記録されますが、npmトークンを直接使用することで、これらの監査証跡を回避することが可能になります。
影響範囲の広さも注目すべき点です。eslint-config-prettierのような人気パッケージは数百万回のダウンロード数を誇り、多数のJavaScriptプロジェクトで使用されています。2025年6月にはGluestackの@react-native-ariaパッケージ群が週100万ダウンロードを超える規模で攻撃を受けており、人気パッケージを狙った攻撃の傾向が明確になっています。
並行して発生したArch LinuxのAURでのChaos RAT配布事案も、同様の供給連鎖攻撃の一例です。AURは「信頼に基づく」システムであり、パッケージの自動検証が行われないという構造的特徴があります。これは迅速なソフトウェア配布を可能にする一方で、悪意あるアクターに悪用される余地を残しています。
技術的対策として、二要素認証の導入やスコープ付きトークンの使用が推奨されていますが、根本的な問題は人間の判断に依存するフィッシング攻撃にあります。最新の攻撃手法では、従来のセキュリティ意識だけでは対応が困難になっています。
長期的な視点では、この事案は供給連鎖セキュリティの重要性を再認識させるものとなります。npmのようなパッケージレジストリには、より強力な検証メカニズムや異常検知システムの導入が求められるでしょう。また、開発者コミュニティ全体でのセキュリティ意識向上も不可欠です。
今回の攻撃は、オープンソースエコシステムの信頼性と利便性のトレードオフという根本的な課題を提起しています。完全なセキュリティを追求すれば開発効率が低下し、利便性を重視すればセキュリティリスクが増大するというジレンマは、今後のソフトウェア開発において継続的に向き合うべき課題となります。
【用語解説】
npmトークン
Node.jsのパッケージマネージャーnpmでパッケージを公開・管理するための認証トークン。このトークンがあれば、GitHubでのコードコミットなしに直接npmレジストリにパッケージを公開できる。
タイポスクワッティング
正規のドメイン名に似た偽のドメイン名を登録し、タイプミスやスペルミスを狙った攻撃手法。今回は「npmjs.com」を「npnjs.com」に偽装して使用された。
DLL(Dynamic Link Library)
Windowsで使用される動的リンクライブラリファイル。実行時に他のプログラムから呼び出され、機能を提供する。悪意あるDLLはリモートコード実行の手段として悪用される。
プロテストウェア
開発者が政治的・社会的メッセージを込めて作成したソフトウェア。正常な機能に加えて抗議活動の要素を含む。今回はウクライナ情勢に関連したものが発見された。
AUR(Arch User Repository)
Arch Linuxユーザーが作成したパッケージビルドスクリプトを共有するコミュニティリポジトリ。公式リポジトリにないソフトウェアをインストールできるが、内容の検証は利用者に委ねられている。
【参考リンク】
Socket(外部)
ソフトウェア供給連鎖セキュリティを専門とする企業。npmパッケージの脅威検出サービス提供
npm(外部)
Node.js向けパッケージマネージャー兼レジストリ。JavaScript開発の中核エコシステム
Arch Linux(外部)
シンプリシティを重視したLinuxディストリビューション。AURによるコミュニティ管理が特徴
GitHub(外部)
マイクロソフト傘下のソフトウェア開発プラットフォーム。オープンソース開発の中心
【参考記事】
Malware found in NPM packages with 1 million weekly downloads(外部)
2025年6月のGluestackパッケージ攻撃事案を詳細分析した技術記事
Rspack npm Packages Compromised with Crypto Mining Malware(外部)
2024年12月のRspackパッケージ攻撃。暗号通貨マイニングマルウェア事案を報告
The biggest supply chain attacks in 2024(外部)
Kasperskyによる2024年主要供給連鎖攻撃の総括。年間動向を詳細分析
Malicious PyPI, npm, and Ruby Packages Exposed in Ongoing Campaign(外部)
2025年6月の複数パッケージレジストリを横断した攻撃キャンペーンの詳細報告
【編集部後記】
今回の事案から、普段何気なく使っているnpmパッケージやLinuxパッケージが、実は私たちの想像以上に多くのリスクを内包していることが浮き彫りになりました。みなさんは現在どのようなセキュリティ対策を講じていらっしゃいますか?二要素認証の設定や依存関係の定期チェックなど、実践されている対策があれば、ぜひSNSで共有していただけると嬉しいです。また、今後のオープンソースエコシステムが持続可能で安全な方向に進むために、開発者またはユーザーとして、私たちに何ができるのでしょうか。一緒に考えていければと思います。