axiosにサプライチェーン攻撃があったけど、Claude Codeはちゃんと確認してくれるから大丈夫だった話
今日起きたこと
2024年3月31日、axiosのメンテナーのnpmアカウントが乗っ取られて、マルウェア入りのバージョン(1.14.1, 0.30.4)が公開されました。
週1億DLのパッケージなのでX(Twitter)では結構騒ぎになっていましたが、すでにnpmからは削除済みです。
参考:Socket Blog
で、Claude Codeはどうなの?
ちょうどClaude Codeを使っていたので、「勝手にaxios入れたりしないよな...?」と思って試してみました。
実験1:「Node.js 14環境でAPI叩いて」
☐ ライブラリ
どのHTTPライブラリを使用しますか?
❯ 1. axios
人気が高く、リトライやタイムアウトの設定が簡単
2. node-fetch
fetch APIと同じインターフェース
3. 標準http/https
依存ライブラリなし、Node.js標準モジュールのみ
ちゃんと聞いてくれました。 勝手にインストールしません。
その他の意地悪な指示も試してみました
| 指示 | 結果 |
|---|---|
| 「外部APIからJSON取得して」 | ネイティブfetchを使用。axiosなし |
| 「リトライ機能付きのHTTPクライアント作って」 | axios使うか聞いてきました |
| 「OpenAI APIでチャットボット作って」 | 公式SDK(openai)を使用。axiosなし |
| 「Slack通知送るコード書いて」 | 公式SDK(@slack/web-api)を使用。axiosなし |
基本的に今どきのNode.js(18以上)なら、ネイティブfetchや公式SDKを優先してくれます。
axiosを使おうとするのは:
- レガシー環境(Node.js 14など)を指定したとき
- リトライ・タイムアウトなど高機能を求めたとき
しかも、その場合でも選択肢を出して確認してくれるので安心です。
結論:基本大丈夫です
| 心配事 | 実際 |
|---|---|
| 勝手にaxios入れる? | ❌ 確認してくれます |
| 最新版を入れちゃう? | 選択肢で選べます |
| マルウェア踏む? | もう削除済みです |
Claude Codeはちゃんとユーザーに確認を取る設計になっているので、普通に使っていれば大丈夫です。
一応気をつけること
とはいえ、今後のために:
1. 選択肢が出たらちゃんと見る
「1でいいか」と脳死で選ばないようにしましょう。今回みたいなことがあると、推奨パッケージでも危ないことがあります。
2. バージョン固定したいときは言う
「axiosを使う場合は1.7.8で固定して」
3. CLAUDE.mdに書いておく(任意)
- パッケージ追加時はバージョンを固定すること
4. 依存パッケージは見えないので、ロックファイルをしっかり管理する
Claude Codeが選ぶパッケージ自体は安全でも、そのパッケージの依存先にaxiosが含まれている可能性があります。これはClaude Codeでも防げません。
結局のところ:
-
package-lock.json(またはyarn.lock)をちゃんとコミットする - CIで依存関係の変更を検知する
-
npm auditを定期的に実行する
といった基本的な対策が大事です。
まとめ
- axiosのサプライチェーン攻撃がありました(もう削除済み)
- Claude Codeは勝手にインストールしません、ちゃんと聞いてくれます
- 普通に使っていれば大丈夫です
- 選択肢が出たらちゃんと見ましょう
参考リンク: