簡単に言うと (TL;DR)
2026年3月31日、攻撃者によって、週に8300万回以上ダウンロードされるJavaScript HTTPクライアント「Axios」のプライマリメンテナーのnpmアカウントが侵害されました。侵害後、開発者マシンから認証情報・SSHキー・クラウドトークンを窃取するクロスプラットフォームのRAT(リモートアクセスツール)を含む悪意のあるバージョン(1.14.1と0.30.4)が公開されました。
直ちにAxios 1.14.0にダウングレードし、すべてのシークレットをローテーションし、システムの痕跡スキャンを実施してください。
はじめに
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.jsonにplain-crypto-js@^4.2.1を追加。
このパッケージは実際のコードではインポートされず、npm install時のpostinstallフック実行のみが目的です。
バイナリ比較では、1.14.0と1.14.1の違いは
package.jsonの1行だけ。
悪意のあるペイロードの機能
ドロッパーのメカニズム
-
plain-crypto-jsのpostinstallで難読化済みsetup.js(4.2KB)実行- 層1: XOR暗号
- 層2: 文字反転+Base64
- デコード後、OSごとにRATを展開
プラットフォーム毎の攻撃経路
macOS:
# AppleScriptを/tmp/6202033に書き込み
# osascriptで実行
# /Library/Caches/com.apple.act.mondへペイロードDL
Windows:
# PowerShellを%PROGRAMDATA%\wt.exeへコピー
# cscript経由でVBScriptドロッパー実行
Linux:
# /tmp/ld.pyにPython RATをダウンロード
# nohup python3で実行
各プラットフォームで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"
結果が表示された場合、侵害バージョンがインストールされています。
ステップ2:悪意のある依存関係を確認
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
ディレクトリが存在すれば、ペイロードが実行された可能性が高いです。
ステップ3:RATアーティファクトの確認
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
ステップ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 installやnpm ciが実行されていないか確認。
即座の修復手順
1. 直ちにAxiosをダウングレード
npm install axios@1.14.0
# 0.x系の場合
npm install axios@0.30.3
2. package.jsonにバージョンオーバーライドを追加
npm
{
"overrides": {
"axios": "1.14.0"
}
}
Yarn
{
"resolutions": {
"axios": "1.14.0"
}
}
3. 悪意のあるパッケージを削除
rm -rf node_modules/plain-crypto-js
4. すべての認証情報をローテーション
以下は全て漏洩したと仮定し、ローテーション必須:
- npmトークン
- AWS/GCP/Azure認証情報
- SSHキー
- GitHubトークン
-
.env内APIキー - DB認証情報
- 環境変数のシークレット
5. ネットワークレベルでC2をブロック
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. アーティファクトが見つかった場合はマシン再構築
RATがシステムを改変している可能性があるため、クリーンな状態からOSを再インストールしてください。
API開発チームのための長期的な防御策
ロックファイルを使用し、正確なバージョンを固定
^1.14.0のようなセムバー範囲指定ではなく、明示的にバージョンを指定。
{
"dependencies": {
"axios": "1.14.0"
}
}
-
package-lock.jsonやyarn.lockを必ずコミット - CI/CDでは
npm ciを使いロックファイルを厳守
CI/CDでpostinstallスクリプトを無効化
攻撃はpostinstallフックを悪用。ビルド時はスクリプト無効化推奨。
npm ci --ignore-scripts
一部パッケージが壊れる場合は.npmrcで選択的に許可
ignore-scripts=true
依存関係を定期監査
npm audit
npx socket-security/cli audit
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
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)