Asayomu Tech
注目★★★★★GitHub Advisory

brace-expansion に DoS 脆弱性、90 バイト入力で数分ハング

30秒で把握

  • 1brace-expansion の expand() が連続 {} グループで O(2ⁿ) 時間処理・90 バイト入力で 2 分ハング
  • 2Node.js 単一スレッドイベントループ上で小さな入力でワーカー全体停止・外部入力接受サービスに高リスク
  • 3max オプションは再帰制限せず・更新版確認と脆弱バージョン排除が必須

要約

brace-expansion ライブラリの expand() 関数に指数時間 O(2ⁿ) の DoS 脆弱性が存在する。連続する非展開 {} グループに対して、わずか 90 バイト・30 グループのASCII 入力が呼び出しスレッドを数分間ブロックし、より長い入力は事実上無期限にハングさせる。Node.js の単一スレッドイベントループ上で実行される主要な消費者では、小さな入力 1 つでワーカー/プロセス全体が停止する。根本原因は expand_ 関数内で post が無条件に再帰計算され、その結果が破棄されるパスでも処理が続くため、各レベルで本質的に同じ残りの作業に対して 2 つの再帰展開が発生することにある。max オプションはこの再帰を制限しないため緩和効果がない。

あなたへの影響

brace-expansion を npm 依存として使用するプロジェクト (特にサーバー/API サーバー/CLI ツール) は、入力が外部から到達する場合、脆弱なバージョンを即座に特定し更新を確認すべき。

推奨:30 グループ未満の入力でも秒単位のハングが発生するため、ユーザー入力を直接処理するエンドポイントがあれば優先度は高い。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。