path-to-regexp は、複数のルートパラメータを介した正規表現サービス拒否 (Regular Expression Denial of Service) に対して脆弱です
プラットフォーム
nodejs
コンポーネント
path-to-regexp
修正バージョン
0.1.13
### 影響 単一のセグメント内に3つ以上のパラメータがあり、それらがピリオド(`.`)以外の文字で区切られている場合、不正な正規表現が生成されます。たとえば、`/:a-:b-:c` または `/:a-:b-:c-:d` などです。`path-to-regexp@0.1.12` で追加されたバックトラック保護は、2つのパラメータのあいまいさのみを防ぎます。3つ以上の場合、生成された先読みは単一の区切り文字をブロックしないため、キャプチャグループが重複し、壊滅的なバックトラッキングが発生します。 ### パッチ [path-to-regexp@0.1.13](https://github.com/pillarjs/path-to-regexp/releases/tag/v.0.1.13) にアップグレードしてください。 ルート定義のカスタム正規表現パターン(例:`/:a-:b([^-/]+)-:c([^-/]+)`) は、デフォルトのキャプチャグループをオーバーライドするため、影響を受けません。 ### 回避策 すべてのバージョンは、単一セグメント内の最初のパラメータ以降のパラメータにカスタム正規表現を提供することでパッチを適用できます。カスタム正規表現がパラメータの前のテキストと一致しない限り、安全です。たとえば、`/:a-:b-:c` を `/:a-:b([^-/]+)-:c([^-/]+)` に変更します。 パスを書き換えることができず、バージョンをアップグレードできない場合は、別の方法として、URLの長さを制限します。 ### 参考文献 - [GHSA-9wv6-86v2-598j](https://githu
修正方法
公式パッチはありません。回避策を確認するか、アップデートを監視してください。