blob: 2ffe46aa5831b2b597dc2852e379d344f1f5866f [file] [log] [blame]
id: GO-2025-3638
modules:
- module: github.com/refraction-networking/utls
versions:
- introduced: 1.0.0
- fixed: 1.7.0
vulnerable_at: 1.6.7
packages:
- package: github.com/refraction-networking/utls
symbols:
- UConn.clientHandshake
derived_symbols:
- Conn.Handshake
- Conn.HandshakeContext
- Conn.Read
- Conn.Write
- Dial
- DialWithDialer
- Dialer.Dial
- Dialer.DialContext
- QUICConn.Start
- Roller.Dial
- UConn.Handshake
- UConn.HandshakeContext
- UConn.Read
- UConn.Write
- UQUICConn.HandleData
- UQUICConn.Start
summary: ServerHellos are accepted without checking TLS 1.3 downgrade canaries in github.com/refraction-networking/utls
description: |-
Before version 1.7.0, utls did not implement the TLS 1.3 downgrade protection
mechanism specified in RFC 8446 Section 4.1.3 when using a utls ClientHello
spec. This allowed an active network adversary to downgrade TLS 1.3 connections
initiated by a utls client to a lower TLS version (e.g., TLS 1.2) by modifying
the ClientHello message to exclude the SupportedVersions extension, causing the
server to respond with a TLS 1.2 ServerHello (along with a downgrade canary in
the ServerHello random field). Because utls did not check the downgrade canary
in the ServerHello random field, clients would accept the downgraded connection
without detecting the attack. This attack could also be used by an active
network attacker to fingerprint utls connections.
ghsas:
- GHSA-pmc3-p9hx-jq96
references:
- advisory: https://github.com/advisories/GHSA-pmc3-p9hx-jq96
- fix: https://github.com/refraction-networking/utls/commit/f8892761e2a4d29054264651d3a86fda83bc83f9
- fix: https://github.com/refraction-networking/utls/pull/337
- report: https://github.com/refraction-networking/utls/issues/181
source:
id: GHSA-pmc3-p9hx-jq96
created: 2025-04-23T15:01:24.251871181Z
review_status: REVIEWED