undiciは、Node.js向けのHTTPクライアントライブラリです。バージョン4.0.0から6.29.0、7.0.0から7.30.0、および8.0.0から8.12.1において、そのAgentディスパッチャは、コンストラクタのオプションをJSONベースの深いコピーによって変換した後、各オリジンごとのプールに転送しますが、JSONは関数を表現できないため、呼び出し元から提供された、チェックサーバーの認証情報を確認するコールバック関数を含むTLSオプションが、TLSレイヤーに到達する前に、通知なく破棄されます。その結果、カスタムのチェックサーバー認証関数によって拒否されるはずのTLSピアが、Nodeのデフォルトのホスト名とチェーンのチェックを通過した場合、通知なく受け入れられてしまいます。Agentは、request、fetch、およびsetGlobalDispatcherのデフォルトのディスパッチャであるため、この問題は多くのアプリケーションで使用されるパスに影響を与え、また、EnvHttpProxyAgentも、直接接続とプロキシを使用しないルートにおいて影響を受けます。ただし、証明書や公開鍵の固定化のために、関数型のTLSオプション(例えば、カスタムのチェックサーバー認証関数)を渡すアプリケーションのみがリスクにさらされます。この問題は、undici 6.29.1、7.30.1、および8.12.2で修正されており、これらのバージョンではTLSオプションがJSONコピーの外部で保持されるため、カスタムの検証コールバック関数が変更されずに転送されます。ユーザーは、これらのバージョン以降にアップグレードするか、回避策として、TLSオプションをtlsではなくconnectを使用するか、プロキシ経由の接続先の場合は、requestTlsとproxyTlsを使用してください。
CVSS 3.1: 9.1 (重大) (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)