Aikido

npm上のaxiosが侵害される:メンテナンス担当者のアカウントが乗っ取られ、RATが展開された

執筆者
マデリーン・ローレンス

主要なポイント

  • axiosの主任メンテナンス担当者のnpmアカウントが乗っ取られました。2つの悪意のあるバージョンが公開されました: axios@1.14.1 そして axios@0.30.4. npmはその後、両方を削除しました。
  • 削除措置が行われる前にいずれかのバージョンをインストールしたユーザーは、システムが侵害されていると見なすべきです。悪意のあるバージョンは依存関係を注入し(plain-crypto-js) macOS、Windows、およびLinuxを標的としたクロスプラットフォーム型のリモートアクセス型トロイの木馬を展開する。
  • axiosの週間ダウンロード数は約1億回に上ります。これは、記録上最も影響力の大きいnpmサプライチェーン攻撃の一つです。
  • このマルウェアは実行後に自己破壊するため、感染後の調査では node_modules それは明かされません。ログファイルを確認する必要があります。

この事件に関する素晴らしい報道について、以下の方々に感謝いたします:

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

修正ステップ

  1. 安全なバージョンにピン留め:
npm install axios@1.14.0   # 1.x ユーザー
npm install axios@0.30.3   # 0.x ユーザー
  1. 推移的解決を防ぐためにオーバーライドを追加します:
{
  "dependencies": { "axios": "1.14.0" },
  "overrides":    { "axios": "1.14.0" },
  "resolutions":  { "axios": "1.14.0" }
}
  1. 削除 plain-crypto-js node_modules から:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
  1. RATに関連する痕跡が見つかった場合(com.apple.act.mond, wt.exe, ld.py)、その場で修復しようとしないでください。正常な状態から再構築してください。
  2. 影響を受けるシステム上でアクセス可能なすべての認証情報を更新してください:npmトークン、AWSアクセスキー、SSH秘密鍵、シークレット、 .env 価値観。
  3. 影響を受けるバージョンがインストールされた実行について、CI/CD ログを監査してください。注入されたすべてのシークレットローテーションしてください。
  4. 実行します npm ci --ignore-scripts CI/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
  • Windows: %PROGRAMDATA%\wt.exe、%TEMP%\6202033.vbs、%TEMP%\6202033.ps1
    • sha256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 (PowerShell)
  • Linux: /tmp/ld.py
    • sha256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

攻撃者のアカウント:

マルウェアのインストールから身を守る方法

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}}

共有:

https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat

脅威ニュースをサブスクライブ

4.7/5
誤検知にうんざりしていませんか?
10万人以上のユーザーと同様に Aikido をお試しください。
今すぐ始める
パーソナライズされたウォークスルーを受ける

10万以上のチームに信頼されています

今すぐ予約
アプリをスキャンして IDORs と実際の攻撃パスを検出します

10万以上のチームに信頼されています

スキャンを開始
AI がどのようにアプリをペンテストするかをご覧ください

10万以上のチームに信頼されています

テストを開始
Axiosのサプライチェーン攻撃の影響を受けているかどうかを確認してください

無料、クレジットカードは不要

マルウェアの検査

今すぐ、安全な環境へ。

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要です | スキャン結果は32秒で表示されます。