DEV Community

Cover image for axios@1.14.1 サプライチェーン攻撃:今すぐすべきこと
Akira
Akira

Posted on • Originally published at apidog.com

axios@1.14.1 サプライチェーン攻撃:今すぐすべきこと

まとめ

2026年3月30日から31日にかけて、axiosのバージョン1.14.1および0.30.4がnpm上で不正な依存関係により侵害され、感染したマシンにリモートアクセス型トロイの木馬(RAT)が仕込まれました。両バージョンは既に公開停止されています。安全なバージョンは1.14.0です。該当バージョンをインストールした場合、マシンが侵害されたとみなし、すべての認証情報を直ちに変更してください。

今すぐApidogをお試しください

axiosとは何か、そしてなぜこれが重要なのか

axiosはnpmで週に1億回ダウンロードされる、主要なHTTPクライアントです。多くのフロントエンド・バックエンド・エンタープライズアプリケーションで利用されています。このような基盤パッケージが侵害された場合、影響範囲は非常に広大です。2026年3月30日から31日の短期間にnpm installを実行した開発者は、マルウェアを自身のマシンにインストールしてしまった可能性があります。

これは仮説ではなく、実際に発生した深刻なサプライチェーン攻撃です。任意コマンドの実行、システムデータの外部送信、永続化するRATが含まれていました。

あなたのチームがaxiosを利用し、ApidogでHTTPクライアントの統合を設計・テストしている場合は、次回のデプロイ前に以下の内容を必ず確認しましょう。

攻撃のタイムライン

  • 2026年3月30日 — 23:59:12 UTC: nrwise@proton.meのアカウントが、plain-crypto-js@4.2.1(悪意あるパッケージ)をnpmに公開。18時間前には正規のcrypto-jsのタイポスクワットであるクリーンなバージョン(4.2.0)も公開。
  • 2026年3月31日 — 00:05:41 UTC: Socketの自動検出システムがplain-crypto-js@4.2.1をマルウェアとして検出(公開から6分後)。
  • 2026年3月31日 — 深夜直後: axios@1.14.1がnpmに公開され、不正な依存としてplain-crypto-js@4.2.1を組み込む。このバージョンはGitHubリポジトリの公式タグには存在しない。
  • 2026年3月31日 — 午前: GitHub issue #10604axios@1.14.10.30.4の侵害が報告される。攻撃者は正規メンテナー以上のnpm権限を持っていた。
  • 2026年3月31日: axios@1.14.10.30.4がnpmから公開停止。トークンの失効と公開管理の強化、調査が開始。

攻撃の手口

この攻撃は、長期間有効なnpmトークンというワークフロー上のギャップを突いたものです。攻撃者はメンテナーの認証情報を侵害し、通常のリリースフロー外で新バージョンを公開しました。

新バージョンはplain-crypto-js@4.2.1を依存関係として持ちます。plain-crypto-jsは正規の暗号化ユーティリティを装っており、クリーンなバージョン履歴も用意されていました。

内部にはSocketが検出した多段階ペイロードが存在します。

  1. ステージ1 — 実行: npmライフサイクルスクリプトでコード実行、セカンダリペイロードをドロップ。
  2. ステージ2 — RATの展開: 恒久的なバックドアとしてRATをインストール。
  3. ステージ3 — データ抜き取り: RATが任意コマンド実行やシークレット情報の外部送信を行う。

RATは再起動後も残るため、パッケージを削除してもRATの明示的除去が必要です。

影響を受けていますか?

以下に該当する場合、マシンが侵害されている可能性があります。

  • 2026年3月30日23:59 UTC2026年3月31日正午UTCの間にnpm install axiosまたはnpm installを実行した。
  • node_modules/axios/package.jsonのバージョンが1.14.1または0.30.4
  • package-lock.jsonyarn.lockでaxiosが1.14.10.30.4として解決されている。

確認手順:

# インストールされているバージョンを確認
npm list axios

# ロックファイルを確認
grep '"axios"' package-lock.json | head -5

# plain-crypto-jsの存在を確認
npm list plain-crypto-js
ls node_modules/plain-crypto-js 2>/dev/null && echo "INFECTED" || echo "Not found"
Enter fullscreen mode Exit fullscreen mode

plain-crypto-jsが存在する場合、悪意あるバージョンを実行した証拠です。

今すぐすべきこと

1. axiosを直ちにアップデートする

npm install axios@1.14.0
# または最新の安全なバージョンに固定
npm install axios@latest
Enter fullscreen mode Exit fullscreen mode

バージョン確認:

npm list axios
# 1.14.0またはそれ以上が表示されていることを確認
Enter fullscreen mode Exit fullscreen mode

2. 侵害されたバージョンをインストールした場合

このケースは通常のアップデート以上の対応が必要です。マシンが侵害された前提で以下を実施してください。

  • すべてのシークレット情報(APIキー、DB認証情報、SSHキー、クラウドトークン、.env変数等)を変更
  • 環境変数の漏洩を確認
  • 影響期間中の外部ネットワーク接続を監査(未知IPへの通信有無を確認)
  • cronジョブ、スタートアップスクリプト、systemdサービスなど永続化の兆候をスキャン
  • CIランナーや本番サーバーの場合は再イメージング。開発PCの場合も認証情報をすべて変更し、完全にクリーンと判断できるまで注意

3. CI/CDパイプラインを監査する

ビルドパイプラインで該当期間にnpm installが実行された場合、CI環境も侵害されている可能性があります。確認と対応を必ず行ってください。

# 影響期間のビルドログでaxios@1.14.1のインストール有無を確認
# 現在のCI環境がクリーンかチェック
npm list axios plain-crypto-js
Enter fullscreen mode Exit fullscreen mode

CIで利用するすべての認証情報(デプロイキー、クラウド認証情報、レジストリトークン等)を変更してください。

4. ロックファイルを確認する

package-lock.jsonyarn.lock1.14.1が使われていた場合は再生成しましょう。

rm package-lock.json
npm install
Enter fullscreen mode Exit fullscreen mode

新しいロックファイルが安全なバージョンのaxiosに解決されていることをコミット前に必ず確認してください。

Apidogを使用してaxiosのAPIコールを監査する

axiosアップデート後、APIクライアントの動作が変化していないか、Apidogで迅速に回帰テストを実行しましょう。

  1. axios@1.14.0にアップデート後、APIエンドポイントをApidogにインポート
  2. 回帰テストを実行し、リクエスト・レスポンスの改ざんが無いか検証
  3. Apidogのレスポンスアサーションで不正なフィールドやヘッダーが混入していないかチェック

例:

// Apidogのレスポンス後アサーション
pm.test("Response is clean — no injected fields", () => {
    const body = pm.response.json();
    pm.expect(body).to.not.have.property('__injected');
    pm.expect(pm.response.headers.get('X-Injected-Header')).to.be.null;
});
Enter fullscreen mode Exit fullscreen mode

Apidogで更新後のaxiosバージョンで完全なテストスイートを実行することで、出荷前にクリーンなベースラインを保証できます。

HTTPクライアントの回帰テストを設定するにはApidogを無料でお試しください

npmにおけるサプライチェーン攻撃の阻止が困難な理由

axiosへの攻撃は例外ではなく、これまでにも同様の事例が発生しています。

  • event-stream (2018): ビットコインウォレット標的のペイロード追加(週800万DL)
  • ua-parser-js (2021): 暗号通貨マイナー・パスワード窃取ツールの混入
  • node-ipc (2022): 指定地域IPを標的とした破壊的コード
  • xz utils (2024): Linuxコア圧縮ライブラリへの2年越しのバックドア
  • axios (2026): メンテナー認証情報侵害によるRAT配布

共通点は「公開アカウントへの信頼」が攻撃ベクトルとなっている点です。npmの公開権限やトークン管理が突破されると、攻撃者は信頼を乗っ取ることが可能です。

実践的な対策:

対策 内容
ロックファイル(package-lock.json 厳密なバージョン固定でサイレントアップデート防止
CIでのnpm audit 既知の脆弱性をデプロイ前に検出
Socket.dev / Snyk 振る舞い分析による未知脅威の検出
npmの二要素認証 認証情報侵害の難易度上昇
有効期限の短いnpm publishトークン トークン漏洩時の被害期間最小化
PRでのロックファイル確認 依存更新の差分をコードレビューで監査

axiosチームは長期有効トークンの危険性を認め、公開管理を厳格化しています。しかし本質的には、npmエコシステム全体での対策が不可欠です。

侵害の痕跡(IOCs)

  • 悪意のあるパッケージ: plain-crypto-js@4.2.1axios@1.14.1axios@0.30.4
  • 公開者メール: nrwise@proton.me
  • 挙動: npmインストール時のネットワーク接続、RAT永続化、環境変数の外部流出
  • 安全なaxiosバージョン: 1.14.0以下(0.30.4は除外)、1.13.x、1.12.x

感染が疑われる場合、security@npmjs.comに報告し、関連ログを保存してください。

結論

axios 1.14.1の侵害は、依存関係のセキュリティ管理が一度だけの監査では不十分であり、継続的なプロセスであることを再認識させます。バージョン固定、CIでのSocket.dev(または同等ツール)による振る舞い分析、認証情報の即時変更、ロックファイルのコードレビューを徹底してください。

axiosアップデート後、API統合の信頼性を再構築する必要がある場合は、Apidogがテストシナリオ・アサーション・モックツールを提供します。本番環境投入前にHTTPクライアントの動作を確実に検証しましょう。

よくある質問

侵害されたaxiosのバージョンはどれですか?

axios@1.14.1axios@0.30.4です。両方ともnpmから公開停止済み。安全なバージョンは1.14.0、または1.13.x、1.12.xライン。

悪意のあるaxiosペイロードは何をしますか?

plain-crypto-js@4.2.1を依存関係として導入し、リモートアクセス型トロイの木馬(RAT)を含む多段階ペイロードを展開。このRATはリモートC2から任意コマンドを実行し、環境変数やシークレット情報を外部流出、再起動後も永続化します。

侵害されたバージョンをインストールしたか知るには?

npm list axiosを実行し、1.14.10.30.4が表示されたら影響あり。npm list plain-crypto-jsも確認し、存在すれば悪意コードが実行されています。

axiosを更新するだけで十分ですか?

いいえ。アップデートは今後の不正依存の排除にはなりますが、RATは既にマシンに永続化している可能性があります。該当バージョンをインストールした場合、すべてのシークレット情報を変更し、永続化メカニズムへの対応が必要です。

攻撃者はメンテナーでなくとも、npmへ公開できた理由は?

攻撃者がメンテナー認証情報を侵害し、公開権限を持つ長期有効npmトークンを悪用した可能性が高いです。axiosチームは現在も調査中で、公開管理体制を強化中。

今回のケースと通常の脆弱性との違いは?

脆弱性は正規コードの欠陥、サプライチェーン攻撃は信頼された公開チャネル経由で悪意コードを導入。今回の侵害コードはGitHubには存在せず、npm公開プロセスに直接注入されました。

今後のサプライチェーン攻撃対策は?

ロックファイル活用、CIでのnpm audit、Socket.dev等の振る舞い分析ツール導入、npmアカウント2FA、有効期限付き公開トークン、コードレビューでロックファイル差分の監査を徹底。

Top comments (0)