概要
- 2026年3月31日、StepSecurityがnpmで配布された axios@1.14.1 および axios@0.30.4 の 悪意あるバージョン を発見。
- 攻撃者は メンテナのnpm認証情報を乗っ取り、通常のCI/CDをバイパスして 手動で公開。
- 悪意ある依存パッケージ plain-crypto-js@4.2.1 を注入し、 クロスプラットフォームRAT を配布。
- macOS/Windows/Linux 向けにペイロードを分岐・自動削除で痕跡隠蔽。
- npmパッケージサプライチェーン攻撃として 極めて高度な手口。
axios悪意あるバージョン流通事件の全貌
-
2026年3月31日、 StepSecurity が axios@1.14.1 および axios@0.30.4 の 悪意あるバージョン をnpmで発見。
-
攻撃者は メンテナ(jasonsaayman)のnpmアカウント を乗っ取り、 ProtonMail アドレスにメール変更後、 npm CLI で手動公開。
-
GitHub ActionsのCI/CDパイプライン をバイパスし、公式リリースと見分けがつかない状態で公開。
-
plain-crypto-js@4.2.1 を新規依存として追加、 postinstallスクリプト で RATドロッパー を実行。
-
plain-crypto-js は実際のaxiosコードで一切import/requireされず、 依存関係のみで発動。
- plain-crypto-js@4.2.0 はクリーンなダミーとして事前公開し、 履歴偽装。
- plain-crypto-js@4.2.1 で postinstall: "node setup.js" と 難読化ドロッパー を仕込む。
-
RATドロッパーは C2サーバ(sfrclak.com:8000/6202033) に接続し、 OS別の2段階ペイロード を配布。
-
実行後は 自己削除 し、 package.jsonをクリーンなダミーで上書き、痕跡を消去。
攻撃タイムライン
- 2026-03-30 05:57 UTC
- plain-crypto-js@4.2.0 公開(履歴作成用ダミー)
- 2026-03-30 23:59 UTC
- plain-crypto-js@4.2.1 公開(悪意あるpostinstall追加)
- 2026-03-31 00:21 UTC
- axios@1.14.1 公開(1.x系ユーザ狙い)
- 2026-03-31 01:00 UTC
- axios@0.30.4 公開(0.x系ユーザ狙い、39分差で両系統カバー)
攻撃手法詳細
-
メンテナアカウント乗っ取り
- jasonsaayman アカウントのnpmトークンを奪取し、手動で公開。
- GitHub Actions経由でない リリースは通常と異なり、 trustedPublisherやgitHead情報が欠落。
- npmレジストリのメタデータで 不審リリース を識別可能。
-
悪意ある依存パッケージの事前準備
- plain-crypto-js を crypto-js の偽装として公開、説明・著者・リポジトリも本物そっくり。
- postinstallフック と 証拠隠滅用ファイル(package.md) を仕込み。
-
依存注入による攻撃
- axios@1.14.1/0.30.4 は plain-crypto-js@^4.2.1 を追加した以外、他の依存は一切変更なし。
- npm install時に自動で plain-crypto-js がインストールされ、 postinstallスクリプト が実行。
-
phantom dependency(幽霊依存)
- axios 本体コード内で plain-crypto-js は一切使われていない。
- 依存関係にのみ現れる不自然なパッケージ は、サプライチェーン攻撃の強力な兆候。
RATドロッパーの技術的分析
- setup.js は 二重難読化 された1ファイル構成。
- 文字列・コマンド・C2 URL等は 配列stq[] にエンコード保存、 復号関数_trans_1/_trans_2 で実行時解読。
- C2 URL: http://sfrclak.com:8000/6202033
OS別ペイロード分岐
- macOS(darwin)
- AppleScript を一時ファイルで生成・実行し、 C2からバイナリ取得→/Library/Caches/com.apple.act.mondに配置・実行。
- Appleのシステムキャッシュ風パス で隠蔽、実行後はスクリプト自体を削除。
- Windows(win32)
- PowerShellバイナリ を偽装名でコピー、 VBScript で完全非表示のコマンド実行。
- C2からPowerShell RATスクリプト取得→一時ファイルで実行・自己削除。
- Linux
- curl でC2からPythonスクリプトを取得、 /tmp/ld.py に保存・実行、後始末も自動化。
axiosユーザへの注意喚起と推奨対応
- axios@1.14.1 または axios@0.30.4 をインストールした場合、 システム侵害済みと見なすべき。
- 即時のパッケージアップグレード・システムスキャン・証拠保全 が必要。
- 依存関係の不審な追加・postinstallの有無 を常時監査する体制の重要性。
npmサプライチェーン攻撃の教訓
- npmパッケージの信頼性はメンテナアカウントのセキュリティに依存。
- OIDC Trusted Publisher等のCI/CD署名 を活用し、 手動公開・不審なメタデータ の検知体制構築。
- phantom dependency(幽霊依存) や postinstallフック の有無は、攻撃兆候の強力なシグナル。
- サプライチェーン攻撃 は今後も増加傾向、 自動監査・AIアナリストの導入 が有効。
参考元:StepSecurity AI Package Analyst, Harden-Runner