主要なポイント
- axiosの主任メンテナンス担当者のnpmアカウントが乗っ取られました。2つの悪意のあるバージョンが公開されました:
axios@1.14.1そしてaxios@0.30.4. npmはその後、両方を削除しました。 - 削除措置が行われる前にいずれかのバージョンをインストールしたユーザーは、システムが侵害されていると見なすべきです。悪意のあるバージョンは依存関係を注入し(
plain-crypto-js) macOS、Windows、およびLinuxを標的としたクロスプラットフォーム型のリモートアクセス型トロイの木馬を展開する。 - axiosの週間ダウンロード数は約1億回に上ります。これは、記録上最も影響力の大きいnpmサプライチェーン攻撃の一つです。
- このマルウェアは実行後に自己破壊するため、感染後の調査では
node_modulesそれは明かされません。ログファイルを確認する必要があります。
この事件に関する素晴らしい報道について、以下の方々に感謝いたします:
- StepSecurity (https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan)
- Socket (https://socket.dev/blog/axios-npm-package-compromised)
Axios攻撃の影響を受けているかどうかを確認する方法
方法 1)手動で確認する
1. 悪意のあるaxiosのバージョンがないか確認する
インストール済みのパッケージとロックファイルをスキャンします 1.14.1 または 0.30.4.
npm list axios 2>/dev/null | grep -E "1.14.1|0.30.4"
grep -A1 '"axios"' package-lock.json | grep -E "1.14.1|0.30.4"2. 隠されたドロッパーパッケージを確認する
たとえ……でも setup.js 自分で削除したにもかかわらず、そのディレクトリは依然として存在している。そのディレクトリが存在しているという事実だけで、ドロッパーが実行されたことが確認できる。
ls node_modules/plain-crypto-js 2>/dev/null && echo "影響を受ける可能性があります"3. ディスク上のRATの痕跡を確認する
macOS
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "COMPROMISED"Windows
dir "%PROGRAMDATA%\wt.exe" 2>nul && echo 侵害されましたLinux
ls -la /tmp/ld.py 2>/dev/null && echo "侵害されました"オプション 2) 使用する Aikido (無料)
リポジトリを Aikido (https://app.aikido.dev). Aikidoのマルウェアモニターは、依存関係 Aikido Aikidoのリアルタイムマルウェアフィードと照合します。もし axios@1.14.1, axios@0.30.4、または plain-crypto-js@4.2.1 プロジェクトのいずれかに含まれている場合、 Aikido は直ちにそれを検知します。これは無料プランでも機能します。
お使いのコードがAxiosのサプライチェーン攻撃の影響を受けていないか確認してください。無料でスキャンするには Aikido
修正ステップ
- 安全なバージョンにピン留め:
npm install axios@1.14.0 # 1.x ユーザー
npm install axios@0.30.3 # 0.x ユーザー- 推移的解決を防ぐためにオーバーライドを追加します:
{
"dependencies": { "axios": "1.14.0" },
"overrides": { "axios": "1.14.0" },
"resolutions": { "axios": "1.14.0" }
}- 削除
plain-crypto-jsnode_modules から:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts- RATに関連する痕跡が見つかった場合(
com.apple.act.mond,wt.exe,ld.py)、その場で修復しようとしないでください。正常な状態から再構築してください。 - 影響を受けるシステム上でアクセス可能なすべての認証情報を更新してください:npmトークン、AWSアクセスキー、SSH秘密鍵、シークレット、
.env価値観。 - 影響を受けるバージョンがインストールされた実行について、CI/CD ログを監査してください。注入されたすべてのシークレットローテーションしてください。
- 実行します
npm ci --ignore-scriptsCI/CDにおける恒常的な方針として。
Axiosのサプライチェーン攻撃で何が起きたのか
攻撃者は ジェイソン・セイマン axiosのメインメンテナであるnpmアカウント。アカウントのメールアドレスは ifstap@proton.me. その後、攻撃者は公開した axios@1.14.1 3月31日 00:21(UTC)に、 axios@0.30.4 UTC 01:00。1.x ブランチと旧バージョンの 0.x ブランチの両方が、39分以内に影響を受けた。
どちらのバージョンにも、axiosのGitHubリポジトリ内に対応するコミット、タグ、またはリリースは存在しませんでした。正規のaxiosリリースは、OIDC Trusted Publisherバインディングを使用したGitHub Actionsを通じて公開されます。これらは、盗まれたnpmアクセストークンを使用して手動で公開されたものです。
両バージョンにおける唯一の変更点は、 plain-crypto-js@^4.2.1 依存関係として。このパッケージは、axiosのソースコード内のどこにもインポートされていません。これは、RATを展開するpostinstallフックを実行するためだけに存在しています。
この依存関係は、約18時間前に別の攻撃者アカウントによって事前に準備されていました(nrwise, nrwise@proton.me). シンプルなデコイ版(4.2.0)が最初に公開され、レジストリの履歴が構築された後、悪意のある 4.2.1 3月30日 23時59分(UTC)。
RATドロッパー(setup.js)は、 sfrclak[.]com:8000 そして、プラットフォーム固有のペイロードを配信します。具体的には、Appleのキャッシュデーモンに偽装したmacOSバイナリを /Library/Caches/com.apple.act.mond、Windows上のPowerShellスクリプトで、インタプリタがコピーされた隠しVBScriptを介して実行される %PROGRAMDATA%\wt.exe、およびLinux上のPythonスクリプトは /tmp/ld.py実行後、ドロッパーは自身を削除し、自身の package.json 証拠を隠すために、きれいに切り取った断片を。
{{cta}}
侵害の兆候(IOC)
悪意のあるAxiosのバージョンと依存関係:
axios@1.14.1(shasum:2553649f2322049666871cea80a5d0d6adc700ca)axios@0.30.4(shasum:d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)plain-crypto-js@4.2.1(shasum:07d889e2dadce6f3910dcbc253317d28ca61c766)
ネットワーク:
- C2:
sfrclak[.]com/142.11.206[.]73/http://sfrclak[.]com:8000/6202033
ファイルシステム:
- macOS:
/Library/Caches/com.apple.act.mond- sha256:
92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
- sha256:
- Windows:
%PROGRAMDATA%\wt.exe、%TEMP%\6202033.vbs、%TEMP%\6202033.ps1- sha256:
617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101(PowerShell)
- sha256:
- Linux:
/tmp/ld.py- sha256:
fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
- sha256:
攻撃者のアカウント:
- jasonsaayman: Axiosのメンテナが侵害され、メールアドレスがifstap@proton.meに変更されました
- nrwise: 攻撃者作成、nrwise@proton.me
マルウェアのインストールから身を守る方法
Aikido セーフチェーン (https://github.com/AikidoSec/safe-chain) は、npm、yarn、および pnpm をラップするオープンソースツールです。すべてのパッケージに対して Aikido Intelのマルウェアフィードと照合し、設定可能なパッケージの最低経過時間(デフォルトは48時間)を強制することで、検証が完了するまで新しく公開されたバージョンの適用を抑制します。このaxios攻撃では、 plain-crypto-js@4.2.1 侵害されたAxiosのバージョンがこれを読み込むまで、存在していたのは24時間未満だった。Safe Chainの有効期限チェックだけで、これをブロックできたはずだ。
無料、トークンは不要:
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh続報をお待ちください。
{{cta}}

