2026年3月31日に発覚したaxiosのサプライチェーン攻撃。
内容を聞くだけでゾッとする話だったので、調べつつ筆者がインターネット上に設置しているgrowiサーバでの影響を調べました。
筆者環境
- Growi v7.4.7
- npm 11.4.0
- Apache 2.4によるリバースプロキシー
- Ubuntu 24.04
自環境の白黒確認
まずは、動いている環境のaxiosバージョンを特定することが最優先。筆者はこのライブラリを恥ずかしながら聞くまで知らなかったのですが 、JavaScriptのデファクトスタンダード的なHTTPクライアントライブラリ と聞いたので「絶対に入っているだろう」の断定で動きました。
調査コマンド
- Growiのルートディレクトリに移動
cd /path/to/growi
自分の環境に合わせます(筆者環境/home/www-data/growi)
- インストール済みaxiosの調査
npm ls axios
または
cat pnpm-lock.yaml |grep axios
- 調査結果
axios@1.11.0
axios@0.26.1
axios@0.21.4
判定:安全
影響を受けるバージョンは
- axios@1.14.1
- axios@0.30.4
そのため、攻撃対象となったaxiosを利用していない(つまり、攻撃コードは混入していない)ものとなっています。
念のための確認
ほぼないとは思いますが「npm updateを実行してしまったかも」の場合は、今回のケースで攻撃者が埋め込んだマルウェアが生成するディレクトリの有無を調べます。
find node_modules -name "plain-crypto-js"
結果、何もなければ物理的にもクリーンです。
また、筆者は該当vpsでBookStackやsnipe-itなどのLaravelライブラリを動かしていますが
cd /path/to/BookStack && pwd
npm ls axios
BookStack@ /home/www-data/BookStack
└── (empty)
と、いずれも(PHPメインであるためか)動いていない状態が分かりました。
サプライチェーン攻撃の危険さ
開発者が信頼している公式ツールをそのまま使っただけで感染する状態であった点にあります。供給者のツールに攻撃ツールを仕込んでいたということで「サプライチェーン攻撃」だそうで。(発覚後、npm が悪性 axios バージョンを削除)
シーケンス
これをmermaid.jsにまとめたのがこちら。
恐ろしさのポイント
- 自動実行: npm install した瞬間に、何も操作せずともウイルス(RAT)が仕込まれます。
- OS別の狙撃: Linux、Windows、macOSそれぞれに最適な攻撃コードが送り込まれます。
- 証拠隠滅: 実行後に自分自身の痕跡(setup.js)を消去し、package.json を書き換えて「何事もなかったかのように」振る舞います。
今後の対策と教訓
たまたまGrowiのアップデートタイミングとずれていた、そして、 pnpm-lock.yamlがあるおかげで、意図しない汚染版の混入を防ぐことができました。
なお、今回のケースで「黒」だった場合は、該当axiosの除去に留まりません。
VPS乗の全ての認証情報
- SSH鍵
- APIトークン
などが漏洩されたものとして作り直す必要があります。
以上、4月1日に公開すべき内容ではないものでした。