
安全研究機関 Socket は 3 月 31 日に、npm コアパッケージ axios がアクティブなサプライチェーン攻撃を受けていることを検知しました。攻撃者は axios の主要メンテナー jasonsaayman の npm アカウントに侵入し、不正なバージョンを公開して悪意のある依存パッケージを注入し、クロスプラットフォームのリモートアクセストロイの木馬(RAT)を展開するために利用しました。標的は macOS、Windows、Linux システムです。
(出典:Socket)
今回の事案は、入念に計画された多段階のサプライチェーン攻撃です。攻撃者はまずメンテナーのアカウントを侵害し、メールアドレスを ifstap@proton.me に変更し、次に盗み取った npm のアクセス資格情報を使って手動で悪意のあるバージョンを公開し、axios の正規の GitHub Actions + OIDC Trusted Publisher による公開プロセスを完全に迂回しました。2 つの悪意のあるバージョンはいずれも GitHub リポジトリ上に対応するコミット、タグ、またはリリースの記録がありません。
攻撃者の準備も同様に精密でした。別のアカウント(nrwise、nrwise@proton.me)を約 18 時間前から制御し、履歴を作るためにクリーンなデコイバージョン plain-crypto-js@4.2.0 を先に公開し、その後 3 月 30 日 23:59 UTC に悪意のある 4.2.1 バージョンを公開しました。
悪意のある postinstall hook が実行された後、RAT 投下者(setup.js)はコマンド・アンド・コントロールサーバー sfrclak[.]com:8000 に接続してプラットフォーム固有のペイロードを投下し、完了後に自滅し、package.json をクリーンなスタブに置き換えます。これにより、事後確認で node_modules ディレクトリに感染の痕跡を見つけられないようにしています。
悪意のあるパッケージのバージョン:axios@1.14.1、axios@0.30.4、plain-crypto-js@4.2.1
C2 サーバー:sfrclak[.]com / 142.11.206.73 / [.]com:8000
macOS 感染痕跡:/Library/Caches/com.apple.act.mond
Windows 感染痕跡:%PROGRAMDATA%\wt.exe、%TEMP%\6202033.vbs
Linux 感染痕跡:/tmp/ld.py
攻撃者アカウント:jasonsaayman(侵害済み)、nrwise(攻撃者が作成したアカウント)
悪意のある投下者は実行後に自滅するため、node_modules ディレクトリの確認では感染を特定できません。正しい方法は、lockfile(package-lock.json または yarn.lock)を直接確認し、axios@1.14.1 または axios@0.30.4 のバージョン記録が含まれているかどうかを調べることです。
安全なバージョンへのロールバック:1.x ユーザーは axios@1.14.0 へダウングレード;0.x ユーザーは axios@0.30.3 へダウングレードし、あわせて node_modules から plain-crypto-js ディレクトリを削除したうえで依存関係を再インストールします。
もしシステム内で RAT の感染痕跡(com.apple.act.mond、wt.exe、ld.py)が見つかった場合、現場での削除を試みないでください。既知の正常な状態から再構築し、さらに直ちに、npm トークン、AWS アクセスキー、SSH 秘密鍵、CI/CD 設定のキー、.env ファイルの値など、あらゆる可能性のある露出した資格情報をローテーションしてください。
暗号資産および Web3 開発者にとって、axios は多くの DeFi プロトコルのフロントエンド、暗号資産管理ツール、ならびにオンチェーンデータ照会サービスの中核となる HTTP ライブラリです。感染した開発環境では、ウォレットの秘密鍵、シードフレーズ、または API キーが攻撃者に漏えいする可能性があります。機密資格情報を優先的に精査し、すべての機密資格情報をローテーションすることを推奨します。
悪意のある投下者は実行後に自滅するため、node_modules ディレクトリの確認では感染を特定できません。lockfile に axios@1.14.1 または axios@0.30.4 の記録が含まれているかを直接確認し、さらに node_modules 内に plain-crypto-js ディレクトリが存在するかどうかを確認します。実行可能な npm list axios、または lockfile 内のバージョン文字列を直接検索します。
axios は Web3 のフロントエンドアプリケーションや DeFi プロトコルのインターフェースでよく使われる HTTP ライブラリです。感染した開発環境では、秘密鍵、シードフレーズ、取引所 API キー、または CI/CD 設定などの機密資格情報が攻撃者に露出する可能性があります。関連する開発者は、優先的に精査し、すべての可能性のある暗号関連の機密資格情報をローテーションすべきです。
主な予防策には以下が含まれます:CI/CD では常に npm ci --ignore-scripts を使用して postinstall hook を無効化する;重要な依存パッケージにバージョン固定を適用する;lockfile の変更履歴を定期的に審査する;そして Socket、Aikido などのツールを導入して依存パッケージに対する即時のマルウェア監視を行う。