Tech BlogAWSツール & 技術ブログ

axios npm侵害事件まとめ:影響チェック手順とClaude Codeで一発確認する方法

何が起きたのか

2026年3月31日、週間約1億ダウンロードを誇るHTTPクライアントライブラリ axios のnpmパッケージが侵害されました。

攻撃者はメンテナアカウント jasonsaayman を乗っ取り、以下の悪意あるバージョンを公開しました。

バージョン タグ 公開時刻 (JST) 露出時間
axios@1.14.1 latest 09:21 約2時間53分
axios@0.30.4 legacy 10:00 約2時間15分

npmチームにより約12:15頃に削除されましたが、この時間帯にnpm installを実行した環境はすべて影響の可能性があります。


攻撃の仕組み

侵害された axios の package.json に、悪性パッケージ plain-crypto-js@4.2.1 が依存関係として追加されていました。

axios@1.14.1
  └── plain-crypto-js@4.2.1  ← 悪性パッケージ
        └── postinstall: setup.js  ← npm install 時に自動実行

plain-crypto-jspostinstall スクリプトがインストール時に自動実行され、**プラットフォーム別のリモートアクセストロイの木馬(RAT)**をダウンロード・実行します。

プラットフォーム別の挙動

環境 実行内容 設置パス
macOS AppleScript経由でRATをドロップ /Library/Caches/com.apple.act.mond
Windows PowerShellコピーを配置、VBScriptでロード %PROGRAMDATA%\wt.exe
Linux Python RATをダウンロード、nohupで実行 /tmp/ld.py

C2サーバ sfrclak[.]com:8000 と通信し、packages.npm.org/product[0-2] という偽装URLで正規のnpm通信に見せかける巧妙な手口です。


影響チェック手順(手動)

Step 1: lockfileの確認

最も確実な方法は、lockfileに侵害バージョンが記録されているか確認することです。

# package-lock.json の場合
grep -E '"axios".*"(1\.14\.1|0\.30\.4)"' package-lock.json
grep "plain-crypto-js" package-lock.json

# yarn.lock の場合
grep -E 'axios@.*(1\.14\.1|0\.30\.4)' yarn.lock
grep "plain-crypto-js" yarn.lock

# pnpm-lock.yaml の場合
grep -E 'axios@(1\.14\.1|0\.30\.4)' pnpm-lock.yaml
grep "plain-crypto-js" pnpm-lock.yaml

いずれかにヒットした場合、影響を受けています。

Step 2: node_modules の確認

lockfileが更新されていなくても、node_modules 内に悪性パッケージが残っている可能性があります。

# 悪性パッケージの存在確認
ls node_modules/plain-crypto-js 2>/dev/null && echo "!! 検出: plain-crypto-js が存在します"

# axios のバージョン確認
cat node_modules/axios/package.json | grep '"version"'

Step 3: バックドアファイルの検出

すでにインストールが実行されていた場合、バックドアが設置されている可能性があります。

# macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "!! バックドア検出"

# Linux
ls -la /tmp/ld.py 2>/dev/null && echo "!! バックドア検出"

# Windows (PowerShell)
# Test-Path "$env:PROGRAMDATA\wt.exe"

Step 4: ネットワーク接続の確認

C2サーバへの通信が発生していないか確認します。

# アクティブな接続を確認
netstat -an | grep "142.11.206.73"
# または
ss -tnp | grep "142.11.206.73"

複数プロジェクトを一括チェック

開発マシンに複数のNode.jsプロジェクトがある場合、以下のワンライナーで一括確認できます。

# ホームディレクトリ以下のすべてのlockfileを検索
find ~/ -name "package-lock.json" -not -path "*/node_modules/*" \
  -exec grep -l "plain-crypto-js" {} \; 2>/dev/null

# node_modules 内の悪性パッケージを直接検索
find ~/ -type d -name "plain-crypto-js" -path "*/node_modules/*" 2>/dev/null

Claude Codeで一発チェックするプロンプト

Claude Codeを使っている方は、以下のプロンプトをそのまま貼り付けるだけで環境チェックができます。

プロンプト(コピペ用)

2026年3月31日のaxios npmサプライチェーン攻撃の影響を調べてください。

以下を順番にチェックして結果を報告してください:

1. このプロジェクトのlockfile(package-lock.json, yarn.lock, pnpm-lock.yaml)に
   axios@1.14.1、axios@0.30.4、または plain-crypto-js が含まれていないか確認

2. node_modules/plain-crypto-js ディレクトリが存在しないか確認

3. node_modules/axios/package.json のバージョンが 1.14.1 または 0.30.4 でないか確認

4. バックドアファイルの存在確認:
   - macOS: /Library/Caches/com.apple.act.mond
   - Linux: /tmp/ld.py

5. 結果をまとめて、影響があった場合は対処手順も教えてください

複数プロジェクト一括チェック用プロンプト

開発マシン上のすべてのNode.jsプロジェクトについて、
2026年3月31日のaxios npmサプライチェーン攻撃の影響を調べてください。

1. ~/以下でpackage-lock.json, yarn.lock, pnpm-lock.yamlを探し、
   それぞれ plain-crypto-js または axios@1.14.1, axios@0.30.4 を含むものを報告

2. ~/以下のnode_modules内にplain-crypto-jsディレクトリがないか検索

3. バックドアファイルの確認:
   - /Library/Caches/com.apple.act.mond
   - /tmp/ld.py

4. 影響があったプロジェクトのリストと対処手順をまとめてください

影響があった場合の対処

1. 即座にバージョンを戻す

# latest系
npm install axios@1.14.0

# legacy系(使用している場合)
npm install axios@0.30.3

2. 悪性パッケージの除去

# node_modules をクリーンインストール
rm -rf node_modules package-lock.json
npm install

3. バックドアの除去とプロセス停止

# macOS
rm -f /Library/Caches/com.apple.act.mond
# 関連プロセスの確認・停止
ps aux | grep "com.apple.act.mond"

# Linux
rm -f /tmp/ld.py
ps aux | grep "ld.py"

4. クレデンシャルのローテーション(最重要)

バックドアが実行された可能性がある場合、環境内のすべてのシークレットが漏洩した前提で対応してください。

  • npmトークンの再生成
  • AWS / GCP / Azure のアクセスキー
  • SSH秘密鍵の再生成
  • データベース接続情報
  • CI/CDのシークレット(GitHub Actions, CircleCI等)
  • .env ファイル内のすべての値

今後の予防策

npm v11+ の場合

.npmrc に以下を設定すると、公開から一定期間未満のバージョンをブロックできます。

min-release-age=7

これにより、公開から7日未満のバージョンはインストールされなくなります。今回のように数時間で削除されるような攻撃には非常に有効です。

pnpm の場合

# .pnpmfile.cjs や設定で trustPolicy を活用
trustPolicy: no-downgrade

その他の対策

  • npm audit の定期実行: CI/CDパイプラインに組み込む
  • lockfileのdiff確認: PRレビュー時に依存関係の変更を必ずチェック
  • postinstallスクリプトの制限: --ignore-scripts オプションの活用を検討
  • Socket.dev / Snyk 等のサプライチェーン監視ツールの導入

まとめ

今回のaxios侵害は、露出時間こそ約3時間と短かったものの、週間1億ダウンロードのパッケージが対象であり、影響範囲は決して小さくありません。

特にCI/CD環境では、この時間帯にビルドが走っていれば自動的にインストールされてしまうため、ビルドログの確認も忘れずに行ってください。

「自分は大丈夫だろう」ではなく、チェックして大丈夫を確認することが重要です。上記の手順やClaude Codeプロンプトを活用して、まずは確認から始めましょう。


参考