{"id":"CVE-2026-97031","kind":"vulnerability","aliases":["CVE-2026-97031","GO-2026-6607"],"related":[],"title":"Reject malformed ECH outer extension references in crypto/tls","description":"Multiple ECH outer extension references are not permitted under RFC 9849; previously, a client could send a well-crafted packet that could trigger memory exhaustion in the server process by specifying multiple references.\n\nWe now reject these as malformed and curb the memory amplification vector as a result.","summary":"Go's crypto/tls package accepted malformed ECH (Encrypted Client Hello) outer extension references, so a client could send a crafted handshake that exhausts memory in the server process. The fix makes the TLS stack reject multiple outer extension references as malformed.","severity":"high","cvss":7.5,"epss":0.00394,"exploited":false,"exploited_at":null,"products":[{"name":"stdlib","fixed":["1.26.9","1.27.2"],"affected":">= 1.27.0-0, < 1.27.2","ecosystem":"go"}],"ecosystems":["go"],"tags":["crypto/tls","go","runtime","self-hosted","tls-servers"],"not_affected_if":["go-below-1.27.0-0-or-on-1.26.9-plus","managed-hosting","no-ech-enabled"],"how_to_check":"Run `go version` on build and deploy hosts and check whether the Go stdlib is >= 1.27.0-0 and < 1.27.2, or 1.26.x before 1.26.9.\nCheck whether the server uses crypto/tls with Encrypted Client Hello enabled (ECH is set via the server's tls.Config); the sources do not give a config flag.","fix":"Upgrade the Go toolchain to 1.26.9 or 1.27.2 and rebuild binaries that use crypto/tls.","status":"open","published_at":"2026-10-08T22:31:09+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T19:56:01+00:00","updated_at":"2026-10-23T19:56:01+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-10-23T19:56:01Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade the Go toolchain to 1.26.9 or 1.27.2 and rebuild binaries that use crypto/tls.\nunknown","summary":"Go's crypto/tls package accepted malformed ECH (Encrypted Client Hello) outer extension references, so a client could send a crafted handshake that exhausts memory in the server process. The fix makes the TLS stack reject multiple outer extension references as malformed.","category":"runtime","who_cares":["go","crypto/tls","self-hosted","tls-servers"],"confidence":0.7,"analyst_note":"","how_to_check":"Run `go version` on build and deploy hosts and check whether the Go stdlib is >= 1.27.0-0 and < 1.27.2, or 1.26.x before 1.26.9.\nCheck whether the server uses crypto/tls with Encrypted Client Hello enabled (ECH is set via the server's tls.Config); the sources do not give a config flag.\nunknown","needs_analyst":false,"not_affected_if":["go-below-1.27.0-0-or-on-1.26.9-plus","no-ech-enabled","managed-hosting"],"severity_if_unknown":"unknown"},"cost_usd":0.000417,"input_tokens":2110,"output_tokens":412,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':10A,13A,16A '-6607':14A '-97031':11A,17A '9849':79C 'accept':32B 'amplif':113C 'client':36B,43B,82C 'could':44B,83C,91C 'craft':47B,88C 'crypto/tls':8A,19B,30B 'curb':110C 'cve':9A,15A 'ech':3A,34B,70C 'encrypt':35B 'exhaust':50B,94C 'extens':5A,39B,65B,72C 'fix':57B 'go':12A,20B,28B 'handshak':48B 'hello':37B 'host':24B 'make':58B 'malform':2A,33B,68B,108C 'memori':51B,93C,112C 'multipl':63B,69C,101C 'outer':4A,38B,64B,71C 'packag':31B 'packet':89C 'permit':76C 'previous':80C 'process':55B,98C 'refer':6A,40B,66B,73C,102C 'reject':1A,62B,105C 'result':117C 'rfc':78C 'runtim':21B 'self':23B 'self-host':22B 'send':45B,84C 'server':27B,54B,97C 'specifi':100C 'stack':61B 'stdlib':18A 'tls':26B,60B 'tls-server':25B 'trigger':92C 'vector':114C 'well':87C 'well-craft':86C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-08T22:31:09+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"134c704f-9b21-4f2e-91b3-4a467353bcc0","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6607","url":"https://pkg.go.dev/vuln/GO-2026-6607","severity":null,"published_at":"2026-10-08T22:31:09+00:00","modified_at":"2026-10-08T22:31:09+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-97031","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-97031","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-97031","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97031","severity":null,"published_at":"2026-10-08T23:17:06+00:00","modified_at":"2026-10-09T16:35:35+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}