Axiosのサプライチェーン攻撃がnpmへの信頼を揺るがす

| 3月31,2026
Axios HTTPクライアントのロゴ。単に「AXIOS」という文字が紫色で書かれているだけのものである

研究者らは、改ざんされたAxiosのバージョンがリモートアクセス型トロイの木馬をインストールすることを突き止めた。

Axiosは、Node.js向けのPromiseベースのHTTPクライアントであり、基本的には開発者がアプリケーションとインターネットとの通信を行うために裏側で使用する補助ツールです。例えば、Axiosを使えば、「サーバーからメッセージを取得する」や「このフォームをウェブサイトに送信する」といったリクエストを、プログラマーにとってより簡単かつ確実に実行できるようになり、低レベルのネットワークコードを自ら大量に記述する手間を省くことができます。

ブラウザとサーバー(Node.js)の両方で動作するため、多くの最新のJavaScriptベースのプロジェクトでは、標準的な構成要素として採用されています。たとえ自分でAxiosをインストールしたことがなくても、次のような場面で間接的にAxiosを利用することになるかもしれません:

  • React、Vue、Angularなどのフレームワークで構築されたWebアプリを使用します。
  • ElectronやReact NativeなどのWeb技術を用いて開発されたモバイルアプリやデスクトップアプリをご利用ください。
  • Axiosを採用した開発者によって構築された、小規模なSaaS(Software-as-a-Service)ツール、管理パネル、またはセルフホスト型サービスをご覧ください。

これは、家の配管に例えることができます。普段は配管の存在に気づくことはありませんが、蛇口をひねれば、そこから水が出てきます。そして、水漏れが起きるまでは、配管がどこにあるかを知る必要もありません。

どうしたの?

Axiosの主要メンテナーの認証情報を悪用し、攻撃者はnpmに改ざんされたパッケージを公開した: axios@1.14.1 そして axios@0.30.4. 悪意のあるバージョンは、新しい依存関係を挿入し、 plain-crypto-js@4.2.1, これはaxiosのソースコードのどこにもインポートされていない。 

これら2つの影響を受けるパッケージを合わせると、npmでの週間ダウンロード数は最大1億件に達しており、これはWebアプリ、サービス、パイプライン全体に甚大な影響が及ぶことを意味します。

注意すべき点は、影響を受けるAxiosのバージョンが、プロジェクトの公式GitHubタグには記載されていないということです。つまり、影響を受けるのは、以下のパスに解決されるnpm installを実行した開発者や環境となります:

  • axios@1.14.1 または axios@0.30.4あるいは
  • 依存関係 plain-crypto-js@4.2.1.

スクリプトを有効にした状態でこれらのバージョンのいずれかをインストールしたワークフローでは、npm install 時に自動的に実行されるポストインストールスクリプト(node setup.js)が、macOS、Windows、または Linux 向けのプラットフォーム固有の RAT ペイロードを取得する難読化されたドロッパーをダウンロードしていたため、注入されたすべてのシークレット(クラウドキー、リポジトリのデプロイキー、npm トークンなど)が、インタラクティブな攻撃者にさらされていた可能性があります。

Axiosを導入している開発者の皆様は、問題のあるバージョンがインストールされたマシンをすべて、完全に侵害された可能性があるものと見なし、シークレットを更新してください。攻撃者は、リポジトリへのアクセス権、署名鍵、APIキー、またはその他のシークレットを入手している可能性があり、これらを利用して今後のリリースにバックドアを仕掛けたり、バックエンドやユーザーを攻撃したりする恐れがあります。

Axiosを使用して構築されたアプリのユーザーは、直接的に心配する必要はありません。単にブラウザでアプリを起動しているだけなら、Axiosを介してこのRATが直接実行されることはありません。感染経路はインストールやビルドの段階にあり、アプリの実行時ではありません。

妥協の指標(IOCs)

研究者らが指摘したように、このマルウェア・ドロッパーは実行後に自身の痕跡を消去する:

「感染後に node_modules/plain-crypto-js/package.json を確認しても、マニフェストは完全にクリーンな状態であることがわかります。postinstall スクリプトも setup.js ファイルも存在せず、悪意のあるものがインストールされた形跡は一切ありません。npm audit を実行したり、インストールされたパッケージのディレクトリを手動で確認したりしても、侵害されたことは判明しません。」

そこで注目すべきは、以下のIOCです:

ドメイン:sfrclak[.]com

IPアドレス:142.11.206.73

(いずれもMalwarebytes によってブロックされています)

ファイル:

  • macOS: /Library/Caches/com.apple.act.mond
  • Linux: /tmp/ld.py 
  • Windows: %PROGRAMDATA%\wt および %TEMP%\6202033.vbs/.ps1。これらは実行中に一時的にのみ存在します。

悪意のある npm パッケージ:

axios@1.14.1のSHA-256チェックサム: 2553649f2322049666871cea80a5d0d6adc700ca

axios@0.30.4のSHA-256チェックサム: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71

plain-crypto-js@4.2.1のSHA-256チェックサム: 07d889e2dadce6f3910dcbc253317d28ca61c766


脅威を報告するだけでなく、取り除く

サイバーセキュリティのリスクは、ヘッドラインを超えて広がるべきではありません。今すぐMalwarebytes ダウンロードして、デバイスに脅威を持ち込まないようにしましょう。

著者について

ピーテル・アルンツ

マルウェアインテリジェンス研究者

コンシューマー・セキュリティ部門で12年連続マイクロソフトMVP。4ヶ国語を操る。リッチなマホガニーと革張りの本の匂い。