今日は、HTTPクライアントライブラリ axios に関するセキュリティ事案と、それを受けて自分のプロジェクトで行った調査・対策について備忘録を兼ねてまとめます。
1. axiosへの攻撃(脆弱性)が判明
先日、axiosにおいて特定の攻撃(SSRFや不適切なプロキシ転送など)に関する脆弱性の情報が入ってきました。
axiosは利用者が非常に多いため、一度脆弱性が突かれると影響が広範囲に及びます。エンジニアとしては、情報をキャッチしたら即座に「自分の現場は大丈夫か?」を確認する初動が重要です。
2. 自プロジェクトの調査を実施
一報を受けて、現在関わっているプロジェクトの axios 利用状況を洗い出しました。
• npm や yarn で管理しているパッケージのバージョンはいくつか?
• 脆弱性の影響を受ける実装になっていないか?
基本的には package.json で管理されていますが、調査の結果、一筋縄ではいかない箇所が見つかりました。
3. CDNで最新バージョンを読み込んでいるプロジェクト
一部のプロジェクトで、HTMLから直接 CDN経由で axios を読み込んでいる 箇所がありました。
以下のような、バージョンを明示しない記述です。
これだと、ライブラリ側に更新があった際に自動で最新版が降ってきます。一見便利ですが、今回のような攻撃対策が必要な場面や、逆にライブラリ側に不具合があった場合に**「勝手にシステムが壊れる」**リスクがあります。
4. 対策:バージョンを「1.14.0」に固定
今回の件を受け、不確実性を排除するためにバージョンを 1.14.0 に固定する対応を行いました。
修正後のコード:
このように明示的に指定することで、予期せぬアップデートによるトラブルを防ぎ、動作の担保ができるようになります。
まとめ:CDN利用でも「固定」が鉄則
開発スピードを優先して「とりあえず最新」を選びがちですが、商用環境や継続的な運用が必要なプロジェクトでは、**「勝手に変わらない(再現性がある)」**ことがセキュリティの第一歩だと再認識しました。
皆さんのプロジェクトも、HTML内で latest 指定のままになっているライブラリがないか、一度チェックしてみることをお勧めします。