---
id: "CVE-2026-97031"
kind: "vulnerability"
aliases: ["CVE-2026-97031", "GO-2026-6607"]
title: "Reject malformed ECH outer extension references in crypto/tls"
severity: "high"
cvss: 7.5
epss: 0.00394
exploited: false
status: "open"
category: "runtime"
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"]
published_at: "2026-10-08T22:31:09+00:00"
first_seen_at: "2026-10-23T19:13:08+00:00"
updated_at: "2026-10-23T19:56:01+00:00"
sources: [{"source": "govuln", "url": "https://pkg.go.dev/vuln/GO-2026-6607", "first_seen_at": "2026-10-23T19:13:08+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-97031", "first_seen_at": "2026-10-23T19:13:43+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-97031", "first_seen_at": "2026-10-23T19:35:23+00:00"}]
---

# Reject malformed ECH outer extension references in crypto/tls

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.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- go:stdlib affected >= 1.27.0-0, < 1.27.2 fixed 1.26.9, 1.27.2

## 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.
Check 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.

## Timeline

- 2026-10-23T19:13:08+00:00 govuln https://pkg.go.dev/vuln/GO-2026-6607
- 2026-10-23T19:13:43+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-97031
- 2026-10-23T19:35:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-97031

## From the sources

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.

We now reject these as malformed and curb the memory amplification vector as a result.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
