Chainguardの未然防御事例:人気プログラム「axios」の悪意あるバージョンが公開されたとき

本稿は Chainguard 公式ブログ「Malicious axios versions published to npm: Chainguard customers protected(March 31, 2026)」の和訳記事です。

著者:Quincy Castro (Chainguard社 CISO)


2026年3月30日、太平洋時間(PT)午後5時21分と午後6時00分の2回にわたり、非常に人気のあるプログラムaxiosの悪意ある(ウイルス入りの)バージョンが2つ、プログラムの配布サイトであるnpmに公開されました。axiosは、月間3億回以上もダウンロードされているJavaScript用の超定番通信プログラムです。

今回問題となったバージョン axios@1.14.1axios@0.30.4 には、その約1時間前に公開されていた plain-crypto-js@4.2.1 という隠された悪質なプログラムが勝手に組み込まれていました。このプログラムが動き出すと、WindowsやMac、Linuxなど、あらゆるパソコンやサーバーに遠隔操作用のウイルス(トロイの木馬)を強制的に送り込みます。なお、この悪質なプログラムは、多くの開発者が愛用している有名なプログラム「crypto-js」の名前を巧妙に真似た、タイポスクワッティング(偽物)でした。

この攻撃は、ここ2週間の間にTrivy、Checkmarx KICS、litellmtelnyxを次々と襲った、現在も進行中の「TeamPCP」による一連のサイバー攻撃とは(現時点では)関連性がないと見られています。しかし、オープンソースの供給ルートを狙う「サプライチェーン攻撃」がどれほど無防備で、いかに破壊的な影響をもたらすかということを、改めて世に知らしめる警鐘となりました。

「Chainguard Containers(コンテナ)」または「Chainguard Libraries(ライブラリ)」をご利用中のお客様は、この攻撃から守られています。今回の犯人が axiosを乗っ取るために使った悪質な攻撃手法を、Chainguard製品がピンポイントで完全にブロックする仕組みになっているためです。まだChainguardをご利用でない方は、無料登録でお試しいただけます。(お申し込みはクリエーションラインへ。)

事件の経緯

最初に、攻撃者が axios の開発メンバー(メンテナー)のログイン情報(IDやパスワードなど)を不正に取得して、アカウントを乗っ取りました。次に、そのアカウントの登録メールアドレスを強引に ifstap@proton.me へと変更したのです。

その直後、悪意ある2つのバージョンが立て続けに公開されました。午後5時21分(太平洋時間)には現行の「1.x」系統を狙った axios@1.14.1 が、そして午後6時00分には古い「0.x」系統を狙った axios@0.30.4 が送り込まれました。

誤解のないようにお伝えすると、axios 自体のソースコード(プログラムの設計図)が改ざんされたわけではありません。

犯人が行ったのは、乗っ取った開発メンバーのアカウントを使い、悪質なプログラムを紛れ込ませた新バージョンを配布サイト「npm」に公開することでした。その新バージョンには、犯人が公開のわずか22分前に登録しておいた plain-crypto-js@4.2.1 というプログラムが、隠し連動プログラム(依存関係)として勝手に組み込まれていました。

この悪質なプログラムには、WindowsやMac、Linuxなど、あらゆるOSを狙った遠隔操作ウイルス(RAT)が仕込まれています。プログラムがインストールされた瞬間に、裏で自動的にハッカーの指令サーバー(C2サーバー)に通信を開始し、第二段階のウイルスをパソコンやサーバーの中に引きずり込みます。このウイルス引き込み役(ドロッパー)は、仕事を終えると自身を自己消去するため、足跡が残りにくい極めて巧妙な手口です。

直接であれ、あるいは axios@1.14.1 axios@0.30.4 を経由した間接的なものであれ、この plain-crypto-js がインストールされてしまったシステムはすべて、「ハッカーに侵入された可能性がある」として警戒する必要があります。

侵入の痕跡(インジケーター) 

Chainguard製品が未導入で、自身の環境で安全確認(監査や影響度調査)を進めているチームに向けて、調査の手がかりとなる plain-crypto-js@4.2.1 に関連する技術的な詳細データを次にまとめます。

悪意あるnpmパッケージ 

  • axios@1.14.1
  • axios@0.30.4
  • plain-crypto-js@4.2.1

ネットワーク上の痕跡(通信先) 

  • 指令(C2)ドメイン:sfrclak[.]com
  • 指令(C2)IPアドレス:142.11.206.73 (Hostwinds)
  • 指令(C2)接続先URL: http://sfrclak[.]com:8000/6202033

ファイルシステム上の痕跡(ウイルスの潜伏場所) 

  • macOS: /Library/Caches/com.apple.act.mond
  • Windows: %PROGRAMDATA%\wt.exe
  • Linux: /tmp/ld.py

対処法 

  1. 導入済みバージョンの安全確認(監査)
    システム内の node_modules フォルダや、インストール情報を記録した「ロックファイル(lock files)」を検索し、axios@1.14.1 または axios@0.30.4 が入っていないか確認します。また、バージョンを問わず plain-crypto-js が存在しないかも併せて確認してください。
  2. 安全なバージョンへのダウングレード
    安全が確認されているバージョン(「1.x」系統なら axios@1.14.0、「0.x」系統なら axios@0.30.3)へダウングレードします。package.json の設定を書き換えたあと、ロックファイルを再生成(更新)します。
  3. 被害に遭ったシステムの「侵入済み」としての対応
    万が一、悪意あるバージョンがインストールされていた場合は、上記の「潜伏場所(ファイル)」に不審なファイルがないか確認し、ドメイン(sfrclak[.]com)に向けた外部への不審な通信が発生していないかを徹底的に調査します。
  4. 各種アクセス権限(認証情報)のリセット
    ウイルスへの感染や情報漏洩の疑いがある場合は、速やかにすべてのGitHub、クラウド事業者、暗号化キー、npm、その他あらゆる秘密鍵を新しいものへ変更(ローテーション)します。

Chainguardユーザーは影響なし 

Chainguard Container および Chainguard Libraries をご利用中のお客様は、今回の攻撃による影響を受けていません。

Chainguard Containers をご利用のお客様

axios を使用しているすべてのコンテナイメージにおいて、安全性が確認されているバージョンのパッケージが自動的に取り込まれるようになっています。   

Chainguard Libraries をご利用のお客様

Chainguardでは、問題となった plain-crypto-js@4.2.1 をそもそもビルド(生成)していません。私たちは、インストール時に自動で裏プログラムを動かす仕組み(post-install scripts)を持つパッケージを、ビルドすることも提供することもないからです。

「プログラムのインストール時に、裏で勝手にスクリプト(自動処理)を実行させること」は、ウイルスの極めて一般的な侵入経路であることが分かっています。そのため、私たちはこうしたパッケージを最初から排除する防御策を長年徹底しています。

今回の事件が発生した際、太平洋時間の午後5時34分から午後8時17分までの間、一時的に axios@1.14.1 がダウンロード可能な状態になっていましたが、悪意あるプログラム(依存関係)を裏で引き込む動作は完全に遮断されていました。現在、JavaScript向けの「Chainguard Libraries」では、安全が確認されている83個のバージョンの axios をいつでも安心してダウンロードいただけます。

今回の教訓と今後の展望 

この一連の攻撃は、「ソフトウェアサプライチェーン・セキュリティ」というテーマを改めて浮き彫りにしました。それは、「企業のセキュリティ強度は、使っている中で最も脆弱なオープンソースプログラムのセキュリティレベルに引き下げられてしまう」ということです。

攻撃者たちは、この弱点を容赦なく突いてきます。最近発生した多くの攻撃の犯人であるハッカー集団「TeamPCP」が、X(旧Twitter)に投稿した次の言葉がすべてを物語っています。

「今年はサプライチェーンの年だ。お前らセキュリティ担当者は、これからめちゃくちゃ長いこと忙しくなるぞ。 🤣 🤣」

—— TeamPCP (@pcpcats)2026年3月31日の投稿より

そして残念なことに、現時点では彼らの言う通りになってしまっています。わずか2週間の間に発生した4つの深刻な攻撃(TrivyLiteLLMtelnyx、そして今回のaxios)は、すべて同じ根本的な弱点が突かれました。それは、「誰もがオープンソースを『無条件で信用』してしまっている」ということです。

プログラムの配布サイト(レジストリ)は、開発メンバー(メンテナー)のアカウントから公開されたものであれば、中身を疑わずにそのまま配信します。そして、企業の開発システムも、それを当たり前のように無条件で取り込んでしまいます。その結果、システムがウイルスに侵され、開発者の作業時間が奪われ、製品の開発スケジュールが狂い、被害が広範囲に及び、最終的にお客様が危険にさらされるという最悪の連鎖が生まれるのです。

犯人たちは、ニュースの熱が冷めれば、私たちがまた元の「無条件の信用」に戻ることを確信して待ち構えています。検証をせずにオープンソースを信じ込んでしまう限り、次の攻撃はあまりにも容易に成功してしまいます。TeamPCPは、こうした攻撃を仕掛けるのは「簡単で安上がりだ」と吹聴しており、これまでに彼らが使った費用はわずか150ドル(約2万円)だとしています。IT業界全体が「配布されているプログラムはすべて本物で安全だ」と信じ込んでいる限り、攻撃者側にとって、「低コストで大打撃を与えられる」という圧倒的有利な状況は変わりません。

今回の事件でも、ウイルス検出ツール(スキャナー)は攻撃の特定に役立ち、一晩中かかった緊急復旧作業のトリガーにはなりましたが、残念ながら問題の根本的な解決にはなっていません。

このような「サプライチェーンに潜むリスク」を皆さんの開発環境から完全に排除するためには、配布されているプログラム(成果物)が、元々のプログラムの設計図(ソースコード)と「寸分違わず完全に一致していること」を証明・検証できる仕組みが必要です。つまり、最初から設計の段階でウイルスを入り込ませない「予防的な防御策」が必要不可欠なのです。

安全を担保するために 

今年相次いだサプライチェーン攻撃を受け、Chainguardでは、私たちの安全なプログラム群や開発支援ツールである「Chainguard Libraries」および「Chainguard Actions」の「3ヶ月無料トライアル」を提供しています。詳細、お申し込みはクリエーションラインまで


クリエーションラインでは:

関連記事:

新規CTA