Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】The Largest NPM Supply Chain Attack of 2025: A Deep Dive into the Compromise of Billions of Downloads

2025年09月10日に「Dev.to」が公開したITニュース「The Largest NPM Supply Chain Attack of 2025: A Deep Dive into the Compromise of Billions of Downloads」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

2025年9月、NPMで史上最大級のサプライチェーン攻撃が発生した。人気パッケージ開発者がフィッシング詐欺でアカウントを乗っ取られ、20億ダウンロード超のパッケージに仮想通貨窃盗を目的とした悪意あるコードが注入された。しかし、迅速な検知と対応により、実際の金銭被害は最小限に抑えられた。この一件は、オープンソースのサプライチェーンセキュリティ対策の重要性を浮き彫りにした。

ITニュース解説

2025年9月8日、JavaScript開発の中心的な役割を担うNode Package Manager(NPM)のレジストリにおいて、過去最大規模とされるサプライチェーン攻撃が発生した。このサイバー攻撃は、非常に人気の高い18のNPMパッケージを標的とし、これらパッケージの週間ダウンロード数は合計で20億回以上にも及んでいた。攻撃の目的は、悪意のあるコードを注入することで、仮想通貨ユーザーのトランザクションを乗っ取ることだった。しかし、幸いにも、この攻撃は迅速に検知され、対応がとられたため、実際の金銭的被害は最小限に抑えられた。

この攻撃は、高度なソーシャルエンジニアリングを駆使したフィッシング詐欺から始まった。攻撃者は、NPMサポートを装った巧妙なフィッシングメールを開発者に送信した。このメールは「npmjs.help」というドメインから送られており、正規のNPMコミュニケーションと見分けがつきにくいように偽装されていた。この結果、「Qix」という、複数の著名なパッケージを開発している信頼できる開発者が、この偽のメールに騙されてしまった。Qixは指示に従い、自身の二段階認証(2FA)をリセットしてしまい、攻撃者にNPMアカウントを乗っ取られることを許してしまったのである。アカウントの乗っ取りは9月8日の13時16分(協定世界時)頃に行われたとされている。攻撃者はアカウントを掌握すると、即座に悪意のある更新を18のパッケージに公開し、例えばindex.jsのような主要なファイルに有害なコードを埋め込んだ。この手口は、技術的な脆弱性を直接攻撃するのではなく、人間の信頼を悪用することで、既存のセキュリティ対策を回避するものであった。悪意のあるバージョンの迅速な公開は、攻撃者がペイロードと標的を事前に計画していたことを示唆している。

攻撃の対象となったパッケージは、JavaScriptエコシステムにおいて非常に広く利用されているものばかりだった。例えば、「ansi-styles」(週間ダウンロード数3億7141万)、「debug」(3億5760万)、「chalk」(2億9999万)、「supports-color」(2億8710万)、「strip-ansi」(2億6117万)、「ansi-regex」(2億4364万)などが含まれていた。これらは、コマンドラインツールからウェブアプリケーションに至るまで、数え切れないほどのプロジェクトで依存関係として使用されている。最初の被害を受けたバージョンが修正されるまでに、これらの悪意のあるパッケージは合計で10億回以上ダウンロードされた。JavaScriptがウェブアプリケーションの約60%を支えていることを考えると、その潜在的な影響範囲は非常に広かったと言える。後続の調査では、「duckdb」や「@coveops/abi」など、さらに多くのパッケージが同じ攻撃キャンペーンに関連していることが明らかになった。

注入された悪意のあるコードは、初期の検知を避けるために難読化されていたが、その実体は仮想通貨窃盗を目的としたブラウザベースのマルウェアであった。このマルウェアは、fetch、XMLHttpRequest、そしてMetaMaskのような拡張機能やSolanaウォレットで使用されるwindow.ethereumなどのウォレットAPIといった、ブラウザの核となる機能に自身を注入する仕組みになっていた。その主な挙動は次の通りだ。まず、ネットワーク層でデータを傍受し、アプリケーションに到達する前にウェブページの内容やAPIのペイロードを改ざんする。次に、ウォレット層では、ユーザーインターフェースには正しい情報が表示されていても、署名直前にプロバイダー呼び出しの引数を変更してトランザクションを破損させる。さらに巧妙なのは、レビンシュタイン距離アルゴリズムを用いて、正規の仮想通貨アドレスを、視覚的に似ている攻撃者管理のアドレスに置き換えることで、ユーザーが注意深く確認しても気づきにくいようにしていた点だ。Ethereum、Bitcoin、Tron、Bitcoin Cash、Litecoin、Solanaといった複数の主要なブロックチェーンを標的にしていた。このマルウェアは、目立つような兆候を避け、承認(function selectors: 0x095ea7b3, 0xd505accf)や送金(0xa9059cbb, 0x23b872dd)などのトランザクション時に、静かに資金を転送することに重点を置いていた。特定のイーサリアム受信アドレスやソラナ公開鍵などが、攻撃の痕跡として特定された。このマルウェアは、被害者が悪意のあるパッケージを組み込んだページを訪れたときに活性化し、主にWeb3ユーザーやDeFi(分散型金融)取引を行うユーザーを狙ったクライアントサイドの脅威だった。

しかし、この大規模な攻撃は、迅速な検知と対応によってその猛威を振るう前に封じ込められた。セキュリティ企業のAikidoは、9月8日の13時16分(協定世界時)という早い段階で、自身のインテルフィードによって異常を検知した。JFrogやSlowMistを含む他のセキュリティ研究者たちも迅速にマルウェアのペイロードを分析し、その知見をコミュニティと共有した。ハードウェアウォレットのメーカーであるLedgerの最高技術責任者(CTO)であるCharles Guillemetは、X(旧Twitter)を通じて緊急の警告を発し、ハードウェアウォレットを使用しない限りオンチェーントランザクションを停止し、署名する前にすべての詳細を徹底的に確認するようユーザーに呼びかけた。アカウントを乗っ取られた開発者Qixも、自身のNPMアカウントに侵入されたことに気づき、約2時間という驚くべき速さで悪意のあるバージョンを削除した。NPM自体も、ほとんどの対象パッケージをプラットフォームから削除することで対応した。オープンソースコミュニティ全体の素早い連携と対応が、この攻撃が引き起こすはずだった甚大な被害を食い止めたのである。多くのプロジェクトが監査を行い、影響を受けていないことを公に確認した。

世間の注目とは裏腹に、この攻撃による実際の金銭的被害は極めて軽微だった。攻撃者が盗んだ総額は約66ドルに過ぎず、これはイーサリアムで約5セント、ミームコインで約20ドルの内訳だった。この被害額は、組織が対応に費やしたコストをはるかに下回るものであった。マルウェアの難読化が比較的稚拙だったこと、そして何よりもセキュリティコミュニティと関係者の迅速な連携による悪意のあるパッケージの迅速な削除が、Log4jのような壊滅的な大規模災害となることを防いだ最大の要因だった。主要な仮想通貨エコシステムからの大規模な損失報告はなかったものの、この事件は開発者のワークフローに一時的な混乱をもたらし、セキュリティに対する警戒感を高める結果となった。

このNPMサプライチェーン攻撃は、オープンソースソフトウェアのサプライチェーンがいかに脆弱であるかを浮き彫りにした。ここから学ぶべき重要な教訓は多岐にわたる。開発者は、たとえ公式に見える送信元からのものであっても、不審なメールには常に警戒心を持つべきだ。また、SMSベースではない、より強固な多要素認証(MFA)を積極的に利用することが求められる。さらに、パッケージのバージョンを固定するためのロックファイルを活用し、依存関係を定期的に監査すること、そしてAikido SafeChainのようなツールを用いてインストール前にマルウェアがないかチェックすることが重要だ。一般ユーザーにとっても、ハードウェアウォレットはトランザクションを安全なデバイス上で検証できるため、非常に有効な防御策となる。常に仮想通貨アドレスを二重に確認し、特に高額な取引を行う際には、注意喚起が出ている間はソフトウェアウォレットの使用を避けるべきだ。NPMのようなエコシステム提供者側も、アカウントセキュリティを強化する必要がある。特に、影響力の大きいパッケージのメンテナーに対しては、ハードウェアキーの義務化などを検討すべきだろう。ソフトウェア部品表(SBOM)のより広範な導入や、自動スキャンツールの活用もリスク軽減に役立つ。加えて、開発者はオフラインバックアップの維持、インシデント後の資格情報のローテーション、パッケージ再インストール前のNPMキャッシュのクリアといった冗長性対策も講じるべきである。

2025年9月に発生したNPM攻撃は、その被害が最小限に抑えられたとはいえ、現代のソフトウェア開発において相互に接続されたリスクがいかに大きいかを明確に示した。何十億ものダウンロードが日々行われる中で、この事件はオープンソースコミュニティ全体における継続的な警戒の必要性を強調している。Web3やDeFiが成長を続けるにつれて、このような攻撃を仕掛ける動機も増大しており、堅牢なセキュリティはもはや選択肢ではなく、絶対的な必要性となっている。この「ニアミス」から学び、エコシステム全体で未来の脅威に対するより強固な防御を築き上げていくことが求められる。

関連コンテンツ

関連IT用語