CVE-2026-32281
High · 7.5CVSS
7.5
EPSS
0.4%
Published
Apr 8, 2026
CISA due date
—
Cloudanix analysis
Some Go-based services can be forced to slow down or stop responding when they process specially crafted but trusted digital certificates.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This vulnerability is a denial-of-service flaw in Go's certificate chain validation logic when processing X.509 certificate policies and policy mappings. If a certificate chain is otherwise trusted—meaning it chains to a root CA present in the configured VerifyOptions.Roots CertPool or the host system trust store—but contains an unusually large number of policy mappings, validation can become unexpectedly inefficient and consume excessive CPU time. The impact is availability loss: services written in Go that validate TLS client certificates, server certificates, signed artifacts, or other X.509 chains may become slow or unresponsive while attempting to validate a maliciously or unusually constructed trusted chain. The flaw does not directly enable code execution, privilege escalation, data disclosure, or certificate trust bypass.
Why it matters to the business
Applications and infrastructure components built with affected Go versions may be vulnerable to remote service degradation or outages if they validate attacker-supplied X.509 certificate chains. Public-facing HTTPS services, mutual TLS gateways, API servers, service meshes, identity systems, package/signature verification workflows, and internal platforms that rely on Go's certificate verification can experience high CPU utilization, request timeouts, connection exhaustion, or cascading service failures. The CVSS availability impact is high, but current exploitation signals are low: EPSS is 0.00355, unchanged over 30 days, it is not listed in CISA KEV, there is no known ransomware association, and no public exploit maturity is reported. Organizations should still prioritize remediation for internet-facing or high-volume certificate-validation paths because denial-of-service flaws can be triggered repeatedly and cheaply once a suitable certificate chain is available.
How an attack unfolds
An attacker first identifies a Go-based service or workflow that accepts and validates certificate chains supplied by the peer or user, such as a TLS endpoint requiring client certificates, a service making outbound TLS connections to attacker-controlled hosts, or an API that validates uploaded certificates. The attacker then obtains or constructs a certificate chain that is otherwise trusted by the target's verification configuration, chaining to a root CA in the application's CertPool or the system certificate pool, and includes a very large number of certificate policy mappings. When the target validates this chain, Go's certificate policy processing performs inefficient work over the excessive policy mappings. By repeatedly initiating connections or submitting validation requests with the crafted chain, the attacker forces the target to spend disproportionate CPU time on certificate verification. At scale, this can tie up worker threads, increase latency, exhaust connection capacity, and cause the affected service to become unavailable. Exploitation depends on the target accepting a trusted chain containing many policy mappings; arbitrary untrusted chains are less relevant because the issue is described as affecting otherwise trusted certificate chains.
How to fix it
Upgrade Go toolchains and rebuild affected Go applications once fixed releases are available from the Go project or downstream vendors. Because no fixed versions were provided in the input, track official Go security advisories for CVE-2026-32281 and apply the first patched release for every supported Go branch in use. Rebuilding is important: statically linked Go binaries typically include the vulnerable standard library code at build time, so updating the system Go package alone may not fix already-built applications. For vendor-supplied products written in Go, apply the vendor's patched release rather than assuming an operating system package update is sufficient. As interim mitigations, limit certificate-chain validation from untrusted sources, enforce request and TLS handshake timeouts, rate-limit certificate-authentication endpoints, cap concurrent handshakes or validation workers, restrict trusted root pools where operationally feasible, reject chains with excessive certificate policy mappings at a proxy or pre-validation layer if supported, and monitor CPU saturation on services that validate client or user-supplied certificates.
How to confirm the fix worked
Confirm exposure by inventorying Go-built services and identifying code paths that call X.509 certificate verification, perform TLS handshakes, require mutual TLS, validate uploaded certificates, or verify signed artifacts. Determine the Go version used to build each binary with build metadata where available, such as `go version -m <binary>`, SBOMs, CI build records, container image labels, or vendor advisories. After applying patches, verify that binaries were rebuilt with a fixed Go release and redeployed, not merely that the Go compiler package was upgraded on a host. Functional validation should include normal TLS and mutual TLS handshakes, certificate upload/signature verification workflows, and load tests to confirm stable CPU and latency. If safe test material is available, validate that chains with excessive policy mappings are rejected quickly or processed without disproportionate CPU consumption. For internet-facing services, repeat external scanning and handshake tests to confirm the patched binaries are serving traffic.
Typical attack path
- Identify a Go-based application, proxy, API, or agent that performs X.509 certificate chain validation on attacker-influenced input.
- Determine whether the validation path uses the system trust store or a configured VerifyOptions.Roots CertPool that may trust the attacker's certificate chain.
- Prepare a certificate chain that chains to a trusted root and contains an unusually large number of certificate policy mappings.
- Send the crafted chain during a TLS handshake, mutual TLS authentication attempt, outbound TLS interaction, certificate upload, or signed-object validation workflow.
- Repeat requests or connections to force repeated expensive certificate validation.
- Cause high CPU usage, increased TLS handshake latency, request timeouts, connection backlog growth, and eventual service degradation or outage.
How to detect it
To determine whether this was already exploited, focus on availability and TLS/certificate-validation telemetry rather than file or malware artifacts. Review application logs, reverse proxy logs, load balancer logs, TLS termination logs, mutual TLS authentication logs, and service-mesh ingress/egress logs for bursts of failed or unusually slow TLS handshakes, client-certificate authentication attempts, certificate verification errors, and request timeouts. Correlate those events with host and container metrics showing elevated CPU consumption without proportional request volume, increased goroutine counts, connection backlog growth, file descriptor pressure, or latency concentrated during handshake/authentication phases. For Go services, inspect runtime, pprof, or tracing data if available for excessive time spent in X.509 certificate verification or policy-processing functions. Network telemetry may show repeated TLS connections from the same source addresses that terminate during or shortly after certificate exchange. If certificate material is logged or captured in packet traces, look for chains containing unusually large certificate policy mapping extensions. No named threat actors, KEV exploitation, or ransomware campaigns are currently associated with this CVE based on the provided data, so detection should be behavior-based.
- x509: certificate signed by unknown authority
- x509: certificate specifies an incompatible key usage
- x509: certificate has expired or is not yet valid
- x509: too many intermediates
- tls: failed to verify certificate
- tls: client didn't provide a certificate
- remote error: tls: bad certificate
- local error: tls: bad record MAC
- http: TLS handshake error
- crypto/x509
- CertificatePolicies
- PolicyMappings
- id-ce-policyMappings
- 2.5.29.33
What your security team should do
- Prioritize inventory of internet-facing and high-throughput Go services that perform TLS, mutual TLS, or certificate-chain validation.
- Track official Go security releases and vendor advisories for patched versions, then rebuild and redeploy all affected statically linked Go binaries.
- Treat vendor appliances, agents, proxies, service-mesh components, identity services, and API gateways written in Go as potentially affected until vendor confirmation is available.
- Apply interim controls: TLS handshake timeouts, connection limits, rate limits, CPU-based autoscaling/alerting, and reduced exposure of certificate-validation endpoints.
- Review trust-store configuration and remove unnecessary private or public roots from application-specific CertPools where feasible.
- Add monitoring for spikes in TLS handshake duration, certificate verification failures, CPU utilization, connection backlog, and repeated client-certificate authentication attempts.
- Because EPSS is currently low, there is no KEV listing, and no mature exploit is reported, schedule broad remediation through standard vulnerability management while accelerating fixes for externally reachable or business-critical services.
- Ensure incident response teams know that exploitation is primarily an availability event and may leave limited traditional malware-style artifacts.
The record
Validating certificate chains which use policies is unexpectedly inefficient when certificates in the chain contain a very large number of policy mappings, possibly causing denial of service. This only affects validation of otherwise trusted certificate chains, issued by a root CA in the VerifyOptions.Roots CertPool, or in the system certificate pool.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Leap 16.0 | go1.25 | 0 | 1.25.9-160000.1.1 |
| openSUSE:Leap 16.0 | go1.26 | 0 | 1.26.2-160000.1.1 |
| openSUSE:Tumbleweed | go1.25 | 0 | 1.25.9-1.1 |
| openSUSE:Tumbleweed | go1.26 | 0 | 1.26.2-1.1 |
Related vulnerabilities
- CVE-2026-42507 When returning errors, functions in the net/textproto package would include its input as… Also affects go1.25
- CVE-2026-42504 Decoding a maliciously-crafted MIME header containing many invalid encoded-words can… Also affects go1.25
- CVE-2026-27145 (*x509.Certificate).VerifyHostname previously called matchHostnames in a loop over all… Also affects go1.25
- CVE-2026-27144 The compiler is meant to unwrap pointers which are the operands of a memory move; a no-op… Also affects go1.25
- CVE-2026-27143 Arithmetic over induction variables in loops were not correctly checked for underflow or… Also affects go1.25
- CVE-2026-32282 On Linux, if the target of Root.Chmod is replaced with a symlink while the chmod… Also affects go1.25
- CVE-2026-32280 During chain building, the amount of work that is done is not correctly limited when a… Also affects go1.25
- CVE-2026-32283 If one side of the TLS connection sends multiple key update messages post-handshake in a… Also affects go1.25