DEV Community

Cover image for Axios NPM サプライチェーン攻撃の仕組みとAPIプロジェクトの保護方法
Akira
Akira

Posted on • Originally published at apidog.com

Axios NPM サプライチェーン攻撃の仕組みとAPIプロジェクトの保護方法

簡単に言うと (TL;DR)

2026年3月31日、攻撃者によって、週に8300万回以上ダウンロードされるJavaScript HTTPクライアント「Axios」のプライマリメンテナーのnpmアカウントが侵害されました。侵害後、開発者マシンから認証情報・SSHキー・クラウドトークンを窃取するクロスプラットフォームのRAT(リモートアクセスツール)を含む悪意のあるバージョン(1.14.1と0.30.4)が公開されました。

直ちにAxios 1.14.0にダウングレードし、すべてのシークレットをローテーションし、システムの痕跡スキャンを実施してください。

今すぐApidogを試す

はじめに

Axiosは、JavaScriptエコシステムで最も多くHTTPリクエストを処理しているライブラリです。APIクライアント構築、エンドポイントテスト、フロントエンドとバックエンド接続など、ほとんどの開発者が利用経験を持っています。

2026年3月31日00:21 UTC、脅威アクターがAxios 1.14.1を乗っ取られたメンテナーアカウントで公開しました。パッケージは見た目上正規と同じで、唯一の変更はpackage.jsonにファントム依存plain-crypto-jsを追加したこと。これにより、npm install時にRATが展開されました。2〜3時間でnpmによって削除されましたが、その間に多くの開発者が影響を受けた可能性があります。

💡 API開発・テスト時、この攻撃は直接あなたのツールチェーンを標的にしました。Apidogの組み込みHTTPクライアントなら、サードパーティ製HTTPライブラリの必要性がなくなり、攻撃対象領域を大幅に縮小できます。セキュリティ監査手順を実施する際は、Apidogを活用してください。

この記事では、攻撃手法、侵害検出方法、APIチームの依存関係管理ガイドラインを徹底的に解説します。


Axiosサプライチェーン攻撃の展開方法

タイムライン

攻撃者は18時間で以下のステップを実行しました。

  • 3月30日 05:57 UTC: plain-crypto-js@4.2.0(クリーンなデコイ)公開
  • 3月30日 23:59 UTC: plain-crypto-js@4.2.1(postinstallフック付き悪性バージョン)公開
  • 3月31日 00:21 UTC: 乗っ取られたjasonsaaymanアカウントからaxios@1.14.1公開
  • 3月31日 01:00 UTC: axios@0.30.4(0.x系向け)公開
  • 3月31日 約03:15 UTC: コミュニティ報告でnpmが両バージョン非公開化
  • 3月31日 04:26 UTC: npmがplain-crypto-jsの再公開を阻止

アカウント侵害の手口

攻撃者は主要メンテナーjasonsaaymanのnpmアカウントを乗っ取り、メールアドレスをifstap@proton.meに変更。

技術的な違い:

  • 正規リリースはOIDC Trusted Publisher+GitHub Actions経由、悪意版はOIDCバインディングなし
  • 悪性パッケージにgitHeadフィールド無し(GitHubコミット紐付けなし)
  • CI/CD経由ではなく、盗難トークンによる手動公開

OIDCやCI/CD履歴の欠如が見られた場合、自動で警告できるようにしましょう。

依存関係注入の手法

攻撃者はAxiosのソースに手を加えず、package.jsonplain-crypto-js@^4.2.1を追加。

このパッケージは実際のコードではインポートされず、npm install時のpostinstallフック実行のみが目的です。

バイナリ比較では、1.14.0と1.14.1の違いはpackage.jsonの1行だけ。


悪意のあるペイロードの機能

ドロッパーのメカニズム

  • plain-crypto-jspostinstallで難読化済みsetup.js(4.2KB)実行
    • 層1: XOR暗号
    • 層2: 文字反転+Base64
  • デコード後、OSごとにRATを展開

プラットフォーム毎の攻撃経路

macOS:

# AppleScriptを/tmp/6202033に書き込み
# osascriptで実行
# /Library/Caches/com.apple.act.mondへペイロードDL
Enter fullscreen mode Exit fullscreen mode

Windows:

# PowerShellを%PROGRAMDATA%\wt.exeへコピー
# cscript経由でVBScriptドロッパー実行
Enter fullscreen mode Exit fullscreen mode

Linux:

# /tmp/ld.pyにPython RATをダウンロード
# nohup python3で実行
Enter fullscreen mode Exit fullscreen mode

各プラットフォームでC2サーバー(mac: product0, win: product1, linux: product2)へPOST通信。

RATの機能

  • 任意コマンド実行
  • ファイルシステム操作・情報窃取
  • プロセス列挙・インジェクション
  • ファイルレス実行
  • 60秒ごとにC2へビーコン

開発マシンの.envやAPIキー、SSHキー、クラウド認証も漏洩します。

フォレンジック対策:自己削除型ペイロード

  • setup.js自身を削除
  • 悪意のpackage.jsonを削除
  • package.md(4.2.0表示)をpackage.jsonへリネーム

npm listで4.2.1を実行した形跡が隠され、後から調査しても気付きづらくなります。


この攻撃の背後にいるのは誰か

Google脅威インテリジェンスグループによると、北朝鮮系のUNC1069が主導。macOSマルウェアは「WAVESHAPER」との重複あり。サプライチェーン攻撃で開発者認証情報や暗号通貨インフラを標的とするグループです。


影響を受けているか確認する方法

ステップ1:Axiosのバージョンを確認

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
Enter fullscreen mode Exit fullscreen mode

結果が表示された場合、侵害バージョンがインストールされています。

ステップ2:悪意のある依存関係を確認

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
Enter fullscreen mode Exit fullscreen mode

ディレクトリが存在すれば、ペイロードが実行された可能性が高いです。

ステップ3:RATアーティファクトの確認

macOS:

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Enter fullscreen mode Exit fullscreen mode

Linux:

ls -la /tmp/ld.py 2>/dev/null
Enter fullscreen mode Exit fullscreen mode

Windows (PowerShell):

Test-Path "$env:PROGRAMDATA\wt.exe"
Enter fullscreen mode Exit fullscreen mode

ステップ4:ネットワークインジケーター確認

  • C2ドメイン: sfrclak.com
  • C2 IP: 142.11.206.73
  • C2 URL: http://sfrclak.com:8000/6202033

これらへの通信がないか確認し、ブロックしてください。

ステップ5:CI/CDビルドログを確認

3月31日00:21〜03:15 UTCのCI/CDパイプラインでnpm installnpm ciが実行されていないか確認。


即座の修復手順

1. 直ちにAxiosをダウングレード

npm install axios@1.14.0
# 0.x系の場合
npm install axios@0.30.3
Enter fullscreen mode Exit fullscreen mode

2. package.jsonにバージョンオーバーライドを追加

npm

{
  "overrides": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode

Yarn

{
  "resolutions": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode

3. 悪意のあるパッケージを削除

rm -rf node_modules/plain-crypto-js
Enter fullscreen mode Exit fullscreen mode

4. すべての認証情報をローテーション

以下は全て漏洩したと仮定し、ローテーション必須:

  • npmトークン
  • AWS/GCP/Azure認証情報
  • SSHキー
  • GitHubトークン
  • .env内APIキー
  • DB認証情報
  • 環境変数のシークレット

5. ネットワークレベルでC2をブロック

echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
Enter fullscreen mode Exit fullscreen mode

6. アーティファクトが見つかった場合はマシン再構築

RATがシステムを改変している可能性があるため、クリーンな状態からOSを再インストールしてください。


API開発チームのための長期的な防御策

ロックファイルを使用し、正確なバージョンを固定

^1.14.0のようなセムバー範囲指定ではなく、明示的にバージョンを指定。

{
  "dependencies": {
    "axios": "1.14.0"
  }
}
Enter fullscreen mode Exit fullscreen mode
  • package-lock.jsonyarn.lockを必ずコミット
  • CI/CDではnpm ciを使いロックファイルを厳守

CI/CDでpostinstallスクリプトを無効化

攻撃はpostinstallフックを悪用。ビルド時はスクリプト無効化推奨。

npm ci --ignore-scripts
Enter fullscreen mode Exit fullscreen mode

一部パッケージが壊れる場合は.npmrcで選択的に許可

ignore-scripts=true
Enter fullscreen mode Exit fullscreen mode

依存関係を定期監査

npm audit
npx socket-security/cli audit
Enter fullscreen mode Exit fullscreen mode

CI/CDで自動実行し、深刻な脆弱性はビルドでブロック。

HTTPクライアント依存の表面積を減らす

なぜAPIテストでサードパーティHTTPライブラリに依存するのか再評価を。

  • ApidogはAPIテスト・デバッグ・ドキュメント用の組み込みHTTPクライアントを提供。Axios/node-fetch/got不要。
  • APIテストをApidogに移行すれば、攻撃対象領域を根本的に削減可能。

具体例:

  • テスト: Axiosスクリプト → Apidogのビジュアルテストビルダーに移行
  • デバッグ: 独自HTTPクライアント → Apidog組み込みリクエストインスペクター
  • モック: Express+Axios → Apidogのスマートモック
  • CI/CD自動テスト: npm HTTP依存なしでApidog CLI

Apidogを無料で試してください。HTTPクライアント依存のないAPIワークフローの安全性を体感してください。

パッケージの来歴を確認

npmはSigstoreによるパッケージ来歴をサポート。依存パッケージの署名を確認。

npm audit signatures
Enter fullscreen mode Exit fullscreen mode

OIDC来歴のない新バージョンは警戒。


JavaScriptエコシステムにとっての意味

信頼モデルの問題

npmはメンテナーアカウントのセキュリティに依存。1つの認証情報漏洩で数千万プロジェクトが脅威に晒される。

今後の見直し案例:

  • OIDC公開の義務化
  • 2人承認によるリリース
  • Denoのようなランタイム権限スコープ

サプライチェーン攻撃は今後も続く

RubyGems、PyPIも含め、あらゆる言語レジストリが狙われている。依存関係ツリーは利便性ではなく「攻撃対象領域」と捉え、管理を徹底しましょう。


比較:HTTPクライアント依存アプローチ

アプローチ サプライチェーンリスク メンテナンス負担 テスト機能
Axios + カスタムスクリプト 高い(サードパーティ依存) 高い(バージョン管理) 手動設定が必要
Node.jsネイティブfetch 低い(ランタイムに組み込み) 低い 限られたテスト機能
Apidog組み込みクライアント なし(npm依存なし) なし(プラットフォーム管理) テスト・モック・ドキュメント全面対応
curl/httpieスクリプト 低い(システムレベルツール) 限られた自動化

よくある質問

Axiosは現在使用しても安全ですか?

はい。1.14.0と0.30.3はクリーンです。npm list axiosで確認し、ロックファイルも安全バージョンかチェックしてください。

RATが実行されたかどうか確認するには?

  • macOS: /Library/Caches/com.apple.act.mond
  • Linux: /tmp/ld.py
  • Windows: %PROGRAMDATA%\wt.exe
  • さらにnode_modules/plain-crypto-jsの存在も確認
  • ドロッパーは自己削除するため、痕跡がなくても影響を否定できません

Axiosの使用を完全にやめるべき?

必須ではありませんが、サードパーティHTTPクライアントの必要性を再評価すべきです。Node.js 18+のfetchや、APIテストならApidog組み込みクライアントの利用を検討してください。

サプライチェーン攻撃を防ぐには?

  • 依存関係のバージョン固定
  • ロックファイルコミット
  • CI/CDでnpm ci --ignore-scripts
  • 依存関係の定期監査
  • npm audit signaturesで来歴確認
  • 依存ツリー最小化
  • APIテストをnpm依存なしのプラットフォームに移行

この攻撃はClaude Codeのソースコード漏洩と関係ある?

同日発生ですが無関係。Axios攻撃は国家支援サプライチェーン侵害、Claude Codeの漏洩はビルドツールのバグに起因。

Axios攻撃の背後にいたのは誰?

Google脅威インテリジェンスグループによると、北朝鮮系UNC1069。macOSマルウェアは「WAVESHAPER」と重複。

何人の開発者が影響?

2〜3時間で週8300万回DL。公式な影響数は未発表ですが、StepSecurityによるとインストールからC2接続まで1.1秒以内。

Apidogはサプライチェーン攻撃防止に役立つ?

はい。APIテスト・デバッグ・ドキュメント用の組み込みHTTPクライアントで、npm依存を排除し、HTTPクライアントのサプライチェーンリスクがゼロになります。


主な要点

  • Axiosサプライチェーン攻撃は1つの盗まれたアカウントから週8300万回以上のダウンロードに影響
  • RATは全プラットフォーム(macOS/Windows/Linux)対応で認証情報・SSHキー・クラウドトークンを窃取
  • 上記検出手順でシステムを即確認
  • 正確な依存関係バージョン固定+CI/CDでpostinstallスクリプト無効化
  • APIテストにはApidogなど組み込みツールで依存表面積縮小
  • パッケージレジストリのセキュリティはnpm/PyPI/RubyGems全体の課題

Axios攻撃は警鐘です。node_modulesの全依存関係は「信頼」の選択です。デフォルト任せではなく、意図的な依存管理を心がけましょう。

Top comments (0)