はじめに
2026年3月31日、npmで最も利用されているHTTPクライアントライブラリ axios がサプライチェーン攻撃を受けました。
リードメンテナーのnpmアカウントが乗っ取られ、マルウェアを含むバージョンが公開されています。
axiosは週間ダウンロード数が1億超のパッケージです。直接使っていなくても、依存関係の中に含まれている可能性が高いため、すべてのNode.js開発者が確認すべき事案です。
侵害されたバージョン
| 項目 | 内容 |
|---|---|
| 危険なバージョン |
axios@1.14.1、axios@0.30.4
|
| 安全なバージョン |
axios@1.14.0、axios@0.30.3
|
| 悪意あるパッケージ |
plain-crypto-js@4.2.1(依存として追加された) |
| マルウェア種別 | クロスプラットフォーム RAT ドロッパー |
axios@1.14.1 または axios@0.30.4 を使用している場合、あなたの環境は侵害されている可能性があります。
何が起きたのか
- メンテナーのnpmアカウントが乗っ取られた
- 攻撃者が事前に悪意あるパッケージ
plain-crypto-js@4.2.1をnpmに公開 - axiosの2つのバージョン(1.x系と0.x系)に、このパッケージを依存として追加
-
npm install時のpostinstallスクリプトでマルウェアが実行される - C2(コマンド&コントロール)サーバーと通信し、OS別のマルウェアを配置
マルウェアが配置されるパス
| OS | パス |
|---|---|
| macOS | /Library/Caches/com.apple.act.mond |
| Windows | %PROGRAMDATA%\wt.exe |
| Linux | /tmp/ld.py |
今すぐやること
Step 1: 自分のプロジェクトで確認する
# axiosのバージョン確認
npm list axios
# 悪意あるパッケージが含まれていないか確認
npm list plain-crypto-js
yarn / pnpm を使っている場合:
# yarn
yarn list --pattern axios
yarn list --pattern plain-crypto-js
# pnpm
pnpm list axios
pnpm list plain-crypto-js
Step 2: マルウェアの痕跡を確認する
# macOS
ls -la /Library/Caches/com.apple.act.mond
# Linux
ls -la /tmp/ld.py
# Windows(PowerShell)
Test-Path "$env:PROGRAMDATA\wt.exe"
ネットワークのIoC(侵害指標):
- C2ドメイン:
sfrclak.com - C2 IP:
142.11.206.73
ファイアウォールやログで上記への通信がないか確認してください。
Step 3: 安全なバージョンに固定する
侵害バージョンでなかった場合も、今後の意図しないアップデートを防ぐために、バージョンを固定してください。
// package.json
{
"dependencies": {
"axios": "1.14.0"
},
"overrides": {
"axios": "1.14.0"
}
}
# クリーンインストール
rm -rf node_modules package-lock.json
npm install
Step 4: 感染していた場合
感染が確認された場合は、以下を実行してください:
-
そのマシンで
npm installを絶対に実行しない(被害が拡大する) - システムをネットワークから隔離する
-
すべてのシークレット・APIキー・トークンをローテーションする
-
.envに書かれている値 - CI/CDの環境変数
- データベースの認証情報
- クラウドサービスのアクセスキー
-
-
node_modulesとロックファイルを削除して、安全なバージョンでクリーンインストール
直接axiosを使っていなくても要確認
axiosは多くのパッケージの推移的依存関係として含まれています。以下のようなケースで知らずに含まれていることがあります:
- フロントエンドフレームワークのHTTPモジュール
- バックエンドSDK(AWS SDK、Firebase Admin等)
- テスト・ビルドツールのプラグイン
- サードパーティライブラリの内部依存
必ず npm list axios 等で確認してください。
CI/CDでの防御策
今回の件に限らず、サプライチェーン攻撃への基本的な防御策です。
# postinstall スクリプトを無効化してインストール
npm install --ignore-scripts
# ロックファイルに基づく厳密なインストール(CI/CD推奨)
npm ci
yarn install --frozen-lockfile
pnpm install --frozen-lockfile
タイムライン(UTC)
| 日時 | イベント |
|---|---|
| 2026/03/30 23:59 |
plain-crypto-js@4.2.1 がnpmに公開 |
| 2026/03/31 00:05 | Socket AI が自動検知 |
| 2026/03/31 ~00:38 | 侵害版 axios が両ブランチで公開(39分以内) |
| 数時間以内 | StepSecurity が警告を公開 |
| 現在 | 攻撃は進行中 |
まとめ
axios@1.14.1とaxios@0.30.4は使わないでください- 安全なバージョン(
1.14.0/0.30.3)に固定してください - 直接使っていなくても、推移的依存として含まれている可能性があります
- 感染していた場合は、すべてのシークレットのローテーションが必要です
サプライチェーン攻撃は「自分には関係ない」と思いがちですが、週間1億DLのパッケージが攻撃対象になった以上、Node.jsを使うすべての開発者に影響があり得ます。まずは確認だけでもしてください。