undiciにおいて、要求されていないWebSocketサブプロトコルが原因で、サービス拒否(DoS)攻撃を受ける脆弱性が存在します。
### 影響
undiciのWebSocketクライアントは、サーバーからの応答(ステータスコード101)に、クライアントが要求していない`Sec-WebSocket-Protocol`ヘッダーが含まれている場合に、接続確立時のハンドシェイク中に、捕捉されない`TypeError`を発生させます。このエラーは、`queueMicrotask`コールバック内で発生し、`try`/`catch`ブロックで囲まれていないため、未捕捉の例外として伝播し、Node.jsプロセスを終了させます。これは、攻撃者が制御または侵害したサーバーへのWebSocket接続、または中間者攻撃を受ける可能性のあるプレーンテキストの`ws://`接続を使用しているアプリケーションに対して、リモートで認証を必要としないサービス拒否攻撃となります。デフォルトの`new WebSocket(url)`の使用において、サブプロトコルが要求されていない場合に影響があります。RFC 6455のセクション4.1に従えば、要求されていないサブプロトコルは接続を失敗させるべきであり、クラッシュさせるべきではありません。
影響を受けるバージョンは、undici 6.7.0以降のすべてのリリースです。
### 修正
undiciを6.28.1、7.29.1、または8.10.2にアップグレードしてください。
### 対策
回避策はありません。修正は、アップグレードによって適用する必要があります。
影響を受けるパッケージ:
- npm (JavaScript) undici: 影響を受けるバージョンは、6.7.0以上、6.28.1未満。6.28.1で修正済み。
- npm (JavaScript) undici: 影響を受けるバージョンは、7.0.0以上、7.29.1未満。7.29.1で修正済み。
- npm (JavaScript) undici: 影響を受けるバージョンは、8.0.0以上、8.10.2未満。8.10.2で修正済み。