npmで10個の悪意あるパッケージが発見、9,900ダウンロードを記録しシステムキーリングから認証情報を窃取

[更新]2025年10月30日07:53

 npmで10個の悪意あるパッケージが発見、9,900ダウンロードを記録しシステムキーリングから認証情報を窃取 - innovaTopia - (イノベトピア)

サイバーセキュリティ企業Socketの研究者Kush Pandya氏は、Windows、Linux、macOSを標的とした情報窃取マルウェアを配信する10個の悪意あるnpmパッケージを発見した。

これらのパッケージは2025年7月4日にnpmレジストリにアップロードされ、合計で9,900回以上ダウンロードされた。パッケージ名はdeezcord.js、dezcord.js、dizcordjs、etherdjs、ethesjs、ethetsjs、nodemonjs、react-router-dom.js、typescriptjs、zustand.jsである。

これらはTypeScript、discord.js、ethers.js、nodemon、react-router-dom、zustandといった人気npmライブラリになりすましたタイポスクワッティングパッケージである。マルウェアは4層の難読化技術を使用してペイロードを隠蔽し、偽のCAPTCHAを表示して正当性を装う。

インストール時にpostinstallフックが自動実行され、被害者のIPアドレスを195.133.79.43の外部サーバーに送信した後、24MBのPyInstallerパッケージ化された情報窃取マルウェアdata_extracterをダウンロードする。

このマルウェアはシステムキーリング、ブラウザ、設定ファイル、SSHキーから認証情報、トークン、セッションCookieを収集し、ZIPアーカイブに圧縮してサーバーへ流出させる。

From: 文献リンク10 npm Packages Caught Stealing Developer Credentials on Windows, macOS, and Linux

【編集部解説】

今回の攻撃が示すのは、開発者を狙ったサプライチェーン攻撃の巧妙化です。npmエコシステムは2025年に入って複数の大規模攻撃に見舞われています。今回発見された10パッケージは合計9,900ダウンロードと規模は比較的小さいものの、攻撃手法の洗練度は際立っています。

特筆すべきは「postinstallフック」の悪用です。npmパッケージをインストールすると、package.jsonに記述されたpostinstallスクリプトが自動実行される仕組みを利用し、開発者が気づかぬうちにマルウェアを起動させます。今回のケースでは新しいターミナルウィンドウを別プロセスで立ち上げることで、npm installの出力とは分離して動作し、偽のCAPTCHA画面を表示して正規のインストール作業を装いました。

4層の難読化技術も注目に値します。XOR暗号、URLエンコーディング、16進数・8進数演算を組み合わせることで、セキュリティツールによる静的解析を回避しています。最終的にダウンロードされる24MBのPyInstallerバイナリは、Windows、Linux、macOSすべてに対応したクロスプラットフォーム設計です。

最も危険なのは、システムキーリングを直接標的にしている点でしょう。多くの開発者は、ブラウザの認証情報やSSH鍵、AWSアクセスキー、データベース接続文字列などをOSの認証情報ストアに保存しています。アプリケーション層のセキュリティをバイパスして復号済みの認証情報を取得できるため、企業の内部ネットワークや本番データベースへの即座のアクセスが可能になります。

Truesecなどのセキュリティ企業は、postinstallスクリプトの無効化を推奨していますが、これは開発の利便性とトレードオフの関係にあります。npm ci –ignore-scriptsでインストールする運用は現実的ですが、正規パッケージの機能が損なわれる可能性もあり、現場での判断が求められます。

タイポスクワッティング攻撃は今後も続くでしょう。typescriptjsやreact-router-dom.jsのように、正規パッケージ名に「js」を付けただけの模倣品は、急いでいる開発者なら見落としかねません。パッケージインストール前の名前確認、ダウンロード数や公開日時のチェック、依存関係の定期監査といった基本的な衛生管理が、ますます重要になっています。

【用語解説】

npm(Node Package Manager)
JavaScriptのパッケージ管理システムで、世界中の開発者が公開・共有するライブラリを簡単にインストールできる仕組み。Node.jsの標準パッケージマネージャーとして広く使われており、2025年現在で300万以上のパッケージが公開されている。

タイポスクワッティング
正規のパッケージ名に似た誤字・スペルミスを利用した名前でパッケージを公開し、タイプミスをした開発者に悪意あるパッケージをインストールさせる攻撃手法。typescriptをtypescriptjsと名付けるなど、わずかな差異で正規品を装う。

postinstallフック
npmパッケージのインストール後に自動実行されるスクリプト機能。本来はビルドや初期設定に使われるが、悪用されると開発者の意図しないコードが実行される危険性がある。

システムキーリング
OS(Windows、macOS、Linux)が提供する認証情報を安全に保管する仕組み。ブラウザのパスワード、SSH鍵、VPN接続情報、データベース接続文字列などが暗号化されて保存されており、正規のアプリケーションのみがアクセスできる設計になっている。

難読化(Obfuscation)
コードを意図的に読みにくくする技術。XOR暗号化、URLエンコーディング、16進数・8進数演算などを組み合わせることで、セキュリティツールによる静的解析を困難にし、マルウェアの検出を回避する。

サプライチェーン攻撃
ソフトウェア開発の供給網(サプライチェーン)のどこかに脆弱性を仕込み、最終的なソフトウェア製品やユーザーを侵害する攻撃手法。npmのようなパッケージレジストリは多数の開発者が利用するため、攻撃の影響範囲が極めて広くなる。

【参考リンク】

Socket(外部)
オープンソース依存関係のセキュリティプラットフォーム。npmパッケージの悪意あるコードや脆弱性を検出し、開発者の安全なライブラリ利用を支援する。

PyInstaller(外部)
Pythonアプリケーションを単一の実行可能ファイルにパッケージ化するツール。Windows、macOS、Linuxに対応している。

【参考記事】

npm Under Siege: Evolving Supply Chain Threats(外部)
2025年10月時点のnpm攻撃全体像を分析。タイポスクワッティング、パッケージハイジャック、依存関係混乱など複数の攻撃ベクトルと防御策を解説。

500+ npm Packages Compromised in Ongoing Supply Chain Attack Shai-Hulud(外部)
2025年9月発覚の500以上のパッケージ侵害を報告。自己増殖型ワームの動作原理とpostinstallスクリプト無効化による防御手法を提案。

【編集部後記】

みなさんの開発環境では、パッケージをインストールする前にどのようなチェックをしていますか。タイプミスひとつで悪意あるパッケージを招き入れてしまう現実は、開発スピードと安全性のバランスをあらためて考えさせられます。

npm ci –ignore-scriptsでの運用や、Socket、Sonatypeのようなセキュリティツールの導入も選択肢のひとつですが、チーム全体でどう運用していくかが鍵になりそうです。みなさんの現場ではどのような対策を取られていますか。もしよければSNSで教えていただけるとうれしいです。

投稿者アバター
TaTsu
『デジタルの窓口』代表。名前の通り、テクノロジーに関するあらゆる相談の”最初の窓口”になることが私の役割です。未来技術がもたらす「期待」と、情報セキュリティという「不安」の両方に寄り添い、誰もが安心して新しい一歩を踏み出せるような道しるべを発信します。 ブロックチェーンやスペーステクノロジーといったワクワクする未来の話から、サイバー攻撃から身を守る実践的な知識まで、幅広くカバー。ハイブリッド異業種交流会『クロストーク』のファウンダーとしての顔も持つ。未来を語り合う場を創っていきたいです。

読み込み中…
advertisements
読み込み中…