crypto/tls: ClientHelloOuter should hide the actual ALPN list #71220
Labels
BugReport
Issues describing a possible bug in the Go implementation.
NeedsInvestigation
Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Go version
go version 1.24rc1
Output of
go env
in your module/workspace:What did you do?
While experimenting with ECH in go 1.24rc1, I noticed that the alpn extension in ClientHelloOuter is the same as in ClientHelloInner.
While the draft RFC doesn't specify exactly what should be in ClientHelloOuter, it does call out the alpn list as a potentially sensitive field.
https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni/#name-introduction
This code shows the ALPN list and SNI in ClientHelloOuter: https://go.dev/play/p/UwIw0DLxH7U (although it doens't run in playground)
My suggestion would be to create the ClientHelloOuter as if the tls Config was pretty much empty, e.g.
What did you see happen?
The client's
NextProtos
are visible in ClientHelloOuter.What did you expect to see?
The client's actual
NextProtos
should only be in ClientHelloInner when ECH is used.The text was updated successfully, but these errors were encountered: