テック技報最新号へ →
コード

Node.js: Axios の proto によるクラッシュ(CVE-2026-25639)→ 1.13.5 以降へ+ユーザー入力を設定に混ぜない

Axios 1.13.4 以前では、{"proto": {...}} を含むオブジェクトを設定として渡すと、設定のマージ処理で TypeError が起き、Node.js のプロセスが落ちる(DoS)。ユーザー入力の JSON を Axios の設定にそのまま渡す構成が危ない。

@yousukezan · 投稿 2026-02-10
#security#javascript#nodejs

対策

  1. バージョンを確認して更新:
    bash
    npm ls axios          # 間接依存も含めて確認
    npm i axios@latest
  2. ユーザー入力をリクエスト設定(headers や params の元になるオブジェクト)へ直接スプレッドしない。必要なキーだけを取り出す:
    ts
    const { q, page } = body;               // 許可したキーだけ
    await axios.get(url, { params: { q, page } });
  3. JSON を受けるところで、__proto__ / constructor / prototype キーを拒否する(スキーマ検証ライブラリで未知キーを落とす)

注意点

  • これはプロトタイプ汚染とは違い、汚染が起きる前にプロセスが止まる。プロセスマネージャで自動再起動していても、繰り返し落とされればサービスは止まる。
  • 間接依存に古い Axios が残っていることが多いので、overrides(npm)/ pnpm.overrides で底上げする。

出典

X の元の投稿を開く