
サプライチェーン攻撃において、攻撃者はフィッシング攻撃でメンテナのアカウントを侵害した後、毎週26億以上ダウンロードされているNPMパッケージにマルウェアを注入した。
このサプライチェーン攻撃でアカウントを乗っ取られたパッケージのメンテナであるJosh Junon(qix)氏は、本日未明にこの事件を確認し、同氏は侵害に気づいており、フィッシングメールはsupport [at] npmjs [dot] helpから送られてきたと述べた。
攻撃者はメールの中で、ターゲットとなったメンテナのアカウントは2025年9月10日にロックされると脅し、フィッシング・サイトにリダイレクトするリンクをクリックさせるための恐怖戦術としていた。
「アカウントのセキュリティに対する我々の継続的なコミットメントの一環として、我々はすべてのユーザーが二要素認証(2FA)の認証情報を更新するよう要請している。当社の記録によると、最後の2FAの更新から12ヶ月以上経過しています。
「アカウントのセキュリティと完全性を維持するため、できるだけ早く更新を完了してください。不正アクセスを防ぐため、2025年9月10日より、2FA認証情報が古いアカウントは一時的にロックされますのでご注意ください。”

フィッシングメールを受け取った人からの報告によると、攻撃者は同じメールを使って他のパッケージメンテナや開発者を標的にしていた。
npmjs[.]helpページにもログインフォームがあり、入力された認証情報を以下のURLに流出させることがわかった:
https://websocket-api2[.]publicvm.com/images/jpg-to-png.php?name=[名前]&pass=[パスワード]。
このインシデントが検出されて以来、NPMチームは、1週間に3億5760万回ダウンロードされているデバッグパッケージ用のものを含め、攻撃者が公開した悪意のあるバージョンのいくつかを削除した。
サプライチェーン攻撃
サプライチェーン攻撃を分析したAikido Securityによると、脅威の主体は、コントロールを奪った後にパッケージを更新し、ブラウザベースのインターセプターとして動作する悪意のあるコードをindex.jsファイルに注入し、ネットワークトラフィックとアプリケーションAPIをハイジャックすることができる。
この悪意のあるコードは、ウェブ経由で侵害されたアプリケーションにアクセスする個人にのみ影響を与え、暗号通貨アドレスとトランザクションを監視し、攻撃者が管理するウォレットアドレスにリダイレクトします。これにより、トランザクションは意図したアドレスに送信されるのではなく、攻撃者によってハイジャックされる。
このマルウェアは、ウェブブラウザに自身を注入し、イーサリアム、ビットコイン、ソラナ、トロン、ライトコイン、ビットコインキャッシュのウォレットアドレスや送金を監視することで動作する。暗号トランザクションのネットワーク応答において、攻撃者が管理するアドレスに宛先を置き換え、署名される前にトランザクションをハイジャックする。
Aikidoによると、悪意のあるコードは、fetch、XMLHttpRequest、ウォレットAPI(window.ethereum、Solanaなど)のようなJavaScript関数をフックすることによってこれを行う。
これまでにハイジャックされたパッケージは、合計で毎週26億ダウンロードを超えている:
- backslash(1週間あたり0.26億ダウンロード)
- chalk-template(毎週390万ダウンロード)
- supports-hyperlinks(毎週1920万ダウンロード)
- has-ansi (1,210万ダウンロード/週)
- simple-swizzle (2626万ダウンロード/週)
- color-string(週に2,748万ダウンロード)
- error-ex (4717万ダウンロード/週)
- color-name (191.71m downloads per week)
- is-arrayish (週に7380万ダウンロード)
- slice-ansi (59.8m downloads per week)
- color-convert (193.5m downloads per week)
- wrap-ansi(週に1億9,799万ダウンロード)
- ansi-regex (週に 243.64m ダウンロード)
- supports-color (287.1m downloads per week)
- strip-ansi (261.17m downloads per week)
- chalk (299.99m downloads per week)
- debug (357.6m downloads per week)
- ansi-styles (371.41m ダウンロード/週)
“パッケージはウェブサイトのクライアント上で実行されるコードの一部を含むように更新され、ブラウザ内の暗号とWeb3の活動を黙って傍受し、ウォレットインタラクションを操作し、資金と承認がユーザーに明白な兆候なしに攻撃者が制御するアカウントにリダイレクトされるように支払い先を書き換える “とAikido Securityの研究者Charlie Eriksenは述べている。
「この攻撃が危険なのは、Webサイトに表示されるコンテンツの改ざん、APIコールの改ざん、ユーザーのアプリが署名していると信じている内容の操作など、複数のレイヤーで動作していることだ。
これはサプライチェーン攻撃であるが、Privy社のプリンシパル・セキュリティ・エンジニアであるAndrew MacPherson氏は、アプリが影響を受けたとするには特定の基準を満たす必要があり、これにより影響が大幅に減少すると語った。これには以下が含まれる:
- パッケージが侵害された午前9時から午前11時30分(米国東部時間)の間に新規インストールされたこと。
- Package-lock.jsonがその時間帯に作成されていること。
- 直接または一時的な依存関係にある脆弱なパッケージ
このサプライチェーン攻撃は、過去数カ月間、さまざまな有名JavaScriptライブラリの開発者を標的とした一連の同様の攻撃に続くものだ。
例えば、7月には、攻撃者は、毎週3,000万ダウンロードを超えるパッケージであるeslint-config-prettierを侵害し、3月には、他の10個の広く使用されているnpmライブラリが乗っ取られ、情報窃盗犯にされた。
フィッシング攻撃と注入されたマルウェアの両方は、ウェブブラウザが認証情報を盗み、トラフィックを変更し、ネットワークに侵入するための大規模な攻撃対象になっていることを示している。
今月末に開催されるウェビナー「Your Browser Is the Breach:このセミナーでは、最近のブラウザー攻撃とこの攻撃対象の防御方法に焦点を当てている。
更新:この攻撃は、当初考えられていたほどインパクトのあるものではなかったため、見出しを修正した。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}





Comments