undici WebSocketクライアントにおける、HTTP/2ハンドシェイクの失敗によるサービス拒否の脆弱性
### 影響
undiciの実験的なWebSocketクライアント(デフォルトで`allowH2: true`が有効)は、HTTP/2経由で悪意のあるサーバーに接続すると、Node.jsプロセスをクラッシュさせます。サーバーがWebSocket接続の確立要求に対して、ハンドシェイクの検証に失敗する応答を送信した場合、undiciは要求を中断しますが、中断は実際には何もしません。なぜなら、要求はすでに完了としてマークされているため、基盤となる`ClientHttp2Stream`がエラーリスナーなしで開かれたままになります。その後、サーバーが接続を終了すると、孤立したストリームから未処理の`error`が発生し、プロセスが終了します。したがって、認証されていないリモートサーバーは、HTTP/2経由でWebSocket接続を開こうとするクライアントに対して、サービスを拒否することができます。影響を受けるバージョンはundici 8.11.0および8.11.1です。この問題は8.11.0で導入されました。
### 修正
バージョンを`8.11.2`にアップグレードしてください。
### 対策
WebSocket接続のためのHTTP/2を無効にするために、`allowH2: false`を設定するか、アップグレードするまで、信頼できないサーバーへのWebSocket接続を開かないようにしてください。
影響を受けるパッケージ:
- npm (JavaScript) undici: 影響を受けるバージョンは8.11.0以上、8.11.2未満。8.11.2で修正されました。