body-parserにおいて、圧縮されたリクエストボディの後に続く不要なデータによって、サービス拒否(DoS)攻撃を受ける脆弱性が存在します。
### 影響
デフォルト設定の`body-parser`を使用しているアプリケーションは、単一のリクエストによってクラッシュする可能性があります。リクエストに`Content-Encoding`(例えば`gzip`)が含まれている場合、`body-parser`はそれを解凍ストリームにパイプします。そして、ボディの読み込み後、そのストリームはエラーリスナーなしでパイプされたままになります。有効な圧縮フレームの後に不要なデータが続くと、解凍は正常に完了し、アプリケーションは通常通り応答しますが、その不要なデータが既に終了したデコーダに到達し、エラーが発生します。このエラーは捕捉されずに例外として再送され、プロセスが終了します。認証や一致するルーティングは不要です。なぜなら、パース処理はルーティングの前に実行されるからです。
### 修正
body-parserのバージョン2.4.0および1.20.9で修正されました。これらのバージョンにアップグレードしてください。
### 対策
アプリケーションが圧縮されたリクエストボディを受け入れる必要がない場合は、body-parserミドルウェアに`inflate: false`を渡してください。これにより、解凍ストリームが作成される前に、エンコードされたリクエストが拒否されます。
影響を受けるパッケージ:
- npm (JavaScript) body-parser: 影響を受けるバージョンは2.0.0以上、2.4.0未満。2.4.0で修正済み。
- npm (JavaScript) body-parser: 影響を受けるバージョンは1.20.9未満。1.20.9で修正済み。