AIで変化の意味を読む:Elasticの新検知ツール(PoC)がAxios攻撃を捉えた方法

BLOG

2026年3月、ソフトウェアサプライチェーンを狙った攻撃が相次ぎました。
信頼されているライブラリやツールそのものが侵害され、開発者が普通に使うだけでリスクにさらされる状況が現実のものとなりました。

その中で注目されたのが、JavaScriptライブラリ「Axios」の侵害と、それを早い段階で捉えたElasticのPoCツールです。

2026年3月:相次いだサプライチェーン攻撃

2026年3月には、複数のサプライチェーン攻撃が確認されています。

  • Trivy侵害
    セキュリティスキャナが侵害され、CI/CD関連の認証情報が流出
  • LiteLLM侵害
    流出した認証情報を利用し、悪意あるパッケージが公開
  • Telnyx Python SDK侵害
    同様の流れで公式SDKが汚染
  • Axios侵害
    npm上で公開されたパッケージに悪意ある依存が追加

これらは同じ月に発生した一連の事象ですが、
すべてが単一の攻撃者によるものではなく、複数の活動が重なっていたと考えられています。

Axiosとは何か

Axiosは、WebアプリケーションでAPI通信を行うためのJavaScriptライブラリです。
多くのプロジェクトで使われており、週1億回くらいダウンロードされることもある、非常に広く利用されているパッケージです。


今回の攻撃で何が起きたのか

今回の攻撃では、AxiosのGitHub上の通常の開発コードではなく、npmで公開されたパッケージに対して変更が加えられました。

具体的には、以下のような構造です。

axios
 └── plain-crypto-js(悪意ある依存パッケージ)

plain-crypto-jsとは

plain-crypto-jsは、実在する暗号ライブラリ「crypto-js」に似せた名前のパッケージです。

  • 見た目は自然(crypto系ライブラリに見える)
  • しかし中身はマルウェア

このように、既存ライブラリに似た名前を使うことで、開発者に違和感を持たせないようにする手口が使われていました。


インストール時に起きること

開発者は通常どおり以下を実行します。

npm install axios

しかし、悪意あるバージョン(例:1.14.1 / 0.30.4)を取得した場合、裏では次のような処理が行われます。

  1. Axiosがインストールされる
  2. plain-crypto-jsが依存としてインストールされる
  3. postinstallスクリプトが自動実行される
  4. マルウェア(RAT)が起動する

この悪意あるバージョンは短時間(数時間程度)公開されており、その間に取得した場合に影響を受ける可能性がありました。


なぜ気づきにくかったのか

今回のポイントは、「違和感の小ささ」です。

  • crypto系の自然な名前
  • 依存関係は自動でインストールされる
  • パッケージの差分は通常見ない

さらに、GitHub上の通常の開発フローではなく、公開パッケージ側に変更が加えられた点も検知を難しくしていました。


ElasticのPoC:supply-chain-monitor

この攻撃を捉えたのが、Elastic Security LabsのJoe Desimone氏が開発したsupply-chain-monitor というPoCツールです。


ツールの構成とAIの役割

Joeが作った supply-chain-monitor の考え方は「差分をAIに読ませる」に尽きます。パッケージ更新が出た瞬間に旧バージョンとの差分を取り、LLMに「これは悪意ある変更か?」と問うだけです。


仕組み

  • PyPIやnpmの更新フィードを定期的に取得し、新しいバージョンの公開を検知する
  • あらかじめ定義したwatchlist(ダウンロード数上位パッケージ)に含まれるかを確認する
  • 対象パッケージの場合、レジストリから「旧バージョン」と「新バージョン」を直接ダウンロードする
  • npm install や pip install は使用せず、コードを実行しない形で安全に取得する
  • 2つのバージョン間の差分(diff)を生成する
  • 差分をMarkdown形式に整形する
  • 整形された差分をLLMに入力として渡すLLMは以下の観点で分析する
    • この変更は開発として自然か
    • 追加されたコードや依存関係に意味があるか
    • 不要・不自然な変更が含まれていないか
  • 分析結果として「malicious / benign」などの判定(verdict)を生成する
  • maliciousと判断された場合、Slackなどにアラートを送信する
  • アナリストはアラート内容(差分+AIの説明)をもとに追加調査を行う

このアプローチの重要なポイントは、コードを実行せずに、使われる前の段階で異常を検知できることです。

従来のアプローチAIを使ったアプローチ
– IOC(IP・ドメイン)を照合
– シグネチャによるマッチング
– 過去の攻撃パターンに対応
-「何があるか」を見る
– コードの変化を読む
– 変更の意図を分析する
– 未知の攻撃にも対応できる
-「何が変わったか」の意味を見る

Axiosの検知でAIが見抜いたのは次の点です:
plain-crypto-js は依存として追加されているのに、コード内で使われていない。人はcryptoっぽい名前だから関係あるかもと見過ごします。AIは使われていない依存の追加=説明できない変更=怪しいと判断しました。

実証できたから、オープンソースにした

このツールはAxiosの侵害を、非常に早い段階でアラートとして検知しました。実際に機能することが証明されたことで、Elasticはこのツールをオープンソースとしてコミュニティに公開することを決定しました。

Joe氏はテスト中に明確なフォールスポジティブを経験しなかったと述べていますが、本人もサンプル数の少なさによる過学習の可能性に触れており、PoCとしての位置づけです。

この取り組みを共有する理由はコミュニティ全体で学ぶことが最も重要だと考えているからです。もしこのアイデアをもとに、より良いものを作る人がいれば素晴らしいことですし、パッケージレジストリ側がこの仕組みを取り入れることができれば、さらに良いことです。そして、この考え方によって次に誰かが被害を防げるのであれば、それだけで十分に価値があります。 Joe Desimone

MITライセンスで公開。誰でも使え、誰でも改善に貢献できます。
github.com/elastic/supply-chain-monitor


なぜAIが必要なのか

パッケージ更新は毎日大量に発生します。
人間がすべての差分を確認することは現実的ではありません。

AIは、

  • 差分を読み続ける
  • 文脈を理解する
  • 異常を説明できる

ことで、従来では対応できなかった領域をカバーします。


Elasticの方向性

Elasticでは、AIを活用したセキュリティの進化が、すでにさまざまな形で進んでいます。

例えば、Attack Discovery、Workflows、Agent Builderといった機能を組み合わせることで、APTレベルの高度な攻撃を自動で検知し、その妥当性まで確認する仕組みが実現されています。

これは単なる自動化ではなく、調査・判断・対応の一連の流れを支援する「エージェント型セキュリティ」です。

日々増え続けるアラートや攻撃に対して、SOCが疲弊するのではなく、より効率的かつ的確に対応できる。

Elasticは、AIを中核に据えることで、セキュリティの「効率」と「精度」の両方を引き上げています。

※ APTレベル = 国や大企業レベルの“高度でしつこい攻撃”


まとめ

今回のAxiosの事例が示したのは、信頼そのものが攻撃対象になる時代です。
そして、それに対抗するためには「変化を理解する力」が必要になります。

ElasticのPoCツールが示したのは、その新しい方向性です。
セキュリティは今、「見る」から「理解する」へと進み始めています。

参考元:

How we caught the Axios supply chain attack — Elastic Security Labs
Joe Desimone shares the story of how he caught the Axios supply chain attack with a proof of concept tool built in an af...
GitHub - elastic/supply-chain-monitor
Contribute to elastic/supply-chain-monitor development by creating an account on GitHub.