CVE-2025-59530
High · 7.5CVSS
7.5
EPSS
0.5%
Published
Oct 10, 2025
CISA due date
—
Cloudanix analysis
A bug in a popular networking library lets certain servers crash applications that use it, and updating the library stops the crashes.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A misbehaving QUIC server can send a premature HANDSHAKE_DONE frame during the handshake, triggering an assertion failure in the quic-go client that crashes the process.
Why it matters to the business
Client applications using the library experience unexpected crashes when connecting to certain servers, causing service disruption and loss of availability for users relying on QUIC-based connections.
How an attack unfolds
An attacker hosts or compromises a QUIC server that deliberately sends a HANDSHAKE_DONE frame before the handshake completes; when a vulnerable client initiates a connection, the assertion triggers and the client process terminates.
How to fix it
Upgrade quic-go to version 0.49.0, 0.54.1, or 0.55.0 (or the commit 275c172fec2b4dae0eea5ac2052a28848b4363ea) which discards Initial keys upon receiving HANDSHAKE_DONE to correctly handle premature frames.
How to confirm the fix worked
Verify the quic-go version in use matches a fixed release; test by connecting to a server that emits an early HANDSHAKE_DONE frame and confirm no assertion failure or crash occurs.
Typical attack path
- Attacker controls or spoofs a QUIC server that sends premature HANDSHAKE_DONE frames
- Vulnerable client initiates a QUIC connection to the server
- Server transmits the invalid HANDSHAKE_DONE frame during the handshake
- Client assertion fails and the process crashes
How to detect it
Inspect application and system logs for sudden process terminations during QUIC handshakes; correlate crashes with connection attempts to external or untrusted servers.
What your security team should do
- Prioritize upgrading all quic-go deployments to a patched version
- Review dependencies and rebuild affected applications with the fixed library
- Monitor client logs for unexpected QUIC handshake crashes until remediation is complete
The record
quic-go is an implementation of the QUIC protocol in Go. In versions prior to 0.49.0, 0.54.1, and 0.55.0, a misbehaving or malicious server can cause a denial-of-service (DoS) attack on the quic-go client by triggering an assertion failure, leading to a process crash. This requires no authentication and can be exploited during the handshake phase. This was observed in the wild with certain server implementations. quic-go needs to be able to handle misbehaving server implementations, including those that prematurely send a HANDSHAKE_DONE frame. Versions 0.49.0, 0.54.1, and 0.55.0 discard Initial keys when receiving a HANDSHAKE_DONE frame, thereby correctly handling premature HANDSHAKE_DONE frames.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/quic-go/quic-go | 0 | 0.49.1 |
| Go | github.com/quic-go/quic-go | 0.50.0 | 0.54.1 |
| Chainguard | caddy | 0 | 2.10.2-r2 |
| Chainguard | caddy-fips | 0 | 2.10.2-r1 |
| Chainguard | caddy-man | 0 | 2.10.2-r2 |
| Chainguard | caddy-src | 0 | 2.10.2-r2 |
| Chainguard | coredns-1.12 | 0 | 1.12.4-r3 |
| Chainguard | coredns-1.12-compat | 0 | 1.12.4-r3 |
| Chainguard | coredns-fips-1.12 | 0 | 1.12.4-r3 |
| Chainguard | dkron | 0 | 4.0.8-r1 |
| Chainguard | dkron-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-gcppubsub | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-gcppubsub-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-grpc | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-grpc-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-kafka | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-kafka-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-nats | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-nats-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-rabbitmq | 0 | 4.0.8-r1 |
| Chainguard | dkron-executor-rabbitmq-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-gcppubsub | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-gcppubsub-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-grpc | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-grpc-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-kafka | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-kafka-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-nats | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-nats-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-rabbitmq | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-executor-rabbitmq-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-files | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-files-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-fluent | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-fluent-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-log | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-log-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-syslog | 0 | 4.0.8-r1 |
| Chainguard | dkron-fips-processor-syslog-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-files | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-files-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-fluent | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-fluent-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-log | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-log-compat | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-syslog | 0 | 4.0.8-r1 |
| Chainguard | dkron-processor-syslog-compat | 0 | 4.0.8-r1 |
| Chainguard | eks-distro-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-coredns-1.29 | 0 | 1.29.55-r1 |
| Chainguard | eks-distro-coredns-1.30 | 0 | 1.30.48-r1 |
| Chainguard | eks-distro-coredns-1.31 | 0 | 1.31.40-r0 |
| Chainguard | eks-distro-coredns-1.32 | 0 | 1.32.30-r1 |
| Chainguard | eks-distro-coredns-1.33 | 0 | 1.33.20-r1 |
| Chainguard | eks-distro-coredns-1.34 | 0 | 1.34.11-r1 |
| Chainguard | eks-distro-coredns-fips-1.29 | 0 | 1.29.58-r0 |
| Chainguard | eks-distro-coredns-fips-1.30 | 0 | 1.30.48-r1 |
| Chainguard | eks-distro-coredns-fips-1.31 | 0 | 1.31.37-r1 |
| Chainguard | eks-distro-coredns-fips-1.32 | 0 | 1.32.30-r1 |
| Chainguard | eks-distro-coredns-fips-1.33 | 0 | 1.33.20-r1 |
| Chainguard | eks-distro-coredns-fips-1.34 | 0 | 1.34.11-r1 |
| Chainguard | eks-distro-fips-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-fips-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-fips-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-fips-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-fips-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-fips-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-apiserver-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-apiserver-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-apiserver-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-apiserver-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-apiserver-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-apiserver-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-apiserver-fips-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-controller-manager-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.32 | 0 | 1.32.28-r0 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-controller-manager-fips-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-proxy-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-proxy-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-proxy-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-proxy-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-proxy-1.33 | 0 | 1.33.18-r0 |
| Chainguard | eks-distro-kube-proxy-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-proxy-fips-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-proxy-fips-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-proxy-fips-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-proxy-fips-1.32 | 0 | 1.32.28-r0 |
| Chainguard | eks-distro-kube-proxy-fips-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-proxy-fips-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-scheduler-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-scheduler-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-scheduler-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-scheduler-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-scheduler-1.33 | 0 | 1.33.18-r0 |
| Chainguard | eks-distro-kube-scheduler-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.30 | 0 | 1.30.46-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kube-scheduler-fips-1.34 | 0 | 1.34.9-r1 |
| Chainguard | eks-distro-kubernetes-pause-1.29 | 0 | 1.29.53-r1 |
| Chainguard | eks-distro-kubernetes-pause-1.30 | 0 | 1.30.46-r0 |
| Chainguard | eks-distro-kubernetes-pause-1.31 | 0 | 1.31.35-r1 |
| Chainguard | eks-distro-kubernetes-pause-1.32 | 0 | 1.32.28-r1 |
| Chainguard | eks-distro-kubernetes-pause-1.33 | 0 | 1.33.18-r1 |
| Chainguard | eks-distro-kubernetes-pause-1.34 | 0 | 1.34.9-r1 |
| Chainguard | frp | 0 | 0.65.0-r1 |
| Chainguard | ipfs-cluster | 0 | 1.1.5-r0 |
| Chainguard | ipfs-cluster-compat | 0 | 1.1.4-r8 |
| Chainguard | ipfs-cluster-fips | 0 | 1.1.5-r0 |
| Chainguard | ipfs-cluster-fips-compat | 0 | 1.1.4-r5 |
| Chainguard | ipfs-cluster-fips-oci-entrypoint | 0 | 1.1.4-r5 |
| Chainguard | ipfs-cluster-oci-entrypoint | 0 | 1.1.4-r8 |
| Chainguard | k3s | 0 | 1.34.1.1-r1 |
| Chainguard | k3s-1.31 | 0 | 1.31.6.1-r4 |
| Chainguard | k3s-1.32 | 0 | 1.32.9.1-r1 |
| Chainguard | k3s-1.33 | 0 | 1.33.5.1-r1 |
| Chainguard | k3s-embedded | 0 | 1.34.1.1-r1 |
| Chainguard | k3s-images | 0 | 1.34.1.1-r1 |
| Chainguard | k3s-multicall | 0 | 1.34.1.1-r1 |
| Chainguard | k3s-multicall-1.31 | 0 | 1.31.6.1-r4 |
| Chainguard | k3s-multicall-1.32 | 0 | 1.32.9.1-r1 |
| Chainguard | k3s-multicall-1.33 | 0 | 1.33.5.1-r1 |
| Chainguard | k3s-static | 0 | 1.34.1.1-r1 |
| Chainguard | k3s-static-1.31 | 0 | 1.31.6.1-r4 |
| Chainguard | k3s-static-1.32 | 0 | 1.32.9.1-r1 |
| Chainguard | k3s-static-1.33 | 0 | 1.33.5.1-r1 |
| Chainguard | k8s_gateway | 0 | 1.6.0-r2 |
| Chainguard | k8s_gateway-compat | 0 | 1.6.0-r2 |
| Chainguard | k8s_gateway-fips | 0 | 1.6.0-r1 |
| Chainguard | k8s_gateway-fips-compat | 0 | 1.6.0-r1 |
| Chainguard | kargo | 0 | 1.9.5-r1 |
| Chainguard | kubernetes-dns-node-cache | 0 | 1.26.5-r2 |
| Chainguard | kubernetes-dns-node-cache-fips | 0 | 1.26.5-r2 |
| Chainguard | kubo | 0 | 0.38.1-r1 |
| Chainguard | kubo-compat | 0 | 0.38.1-r1 |
| Chainguard | kubo-fips | 0 | 0.38.1-r1 |
| Chainguard | kubo-fips-compat | 0 | 0.38.1-r1 |
| Chainguard | kuma-coredns-1.12 | 0 | 1.12.4-r3 |
| Chainguard | kyverno-policy-reporter-ui | 0 | 2.4.4-r1 |
| Chainguard | kyverno-policy-reporter-ui-compat | 0 | 2.4.4-r1 |
| Chainguard | kyverno-policy-reporter-ui-fips | 0 | 2.4.4-r1 |
| Chainguard | kyverno-policy-reporter-ui-fips-compat | 0 | 2.4.4-r1 |
| Chainguard | q | 0 | 0.19.9-r1 |
| Chainguard | rke2-runtime-1.31 | 0 | 1.31.13.2.1-r1 |
| Chainguard | rke2-runtime-1.31-charts | 0 | 1.31.13.2.1-r1 |
| Chainguard | rke2-runtime-1.32 | 0 | 1.32.9.2.1-r2 |
| Chainguard | rke2-runtime-1.32-charts | 0 | 1.32.9.2.1-r2 |
| Chainguard | rke2-runtime-1.33 | 0 | 1.33.5.2.1-r1 |
| Chainguard | rke2-runtime-1.33-charts | 0 | 1.33.5.2.1-r1 |
| Chainguard | rke2-runtime-1.33-compat | 0 | 1.33.5.2.1-r1 |
| Chainguard | spegel | 0 | 0.4.0-r1 |
| Chainguard | spegel-compat | 0 | 0.4.0-r1 |
| Chainguard | spegel-fips | 0 | 0.4.0-r1 |
| Chainguard | spegel-fips-compat | 0 | 0.4.0-r1 |
| Chainguard | syncthing | 0 | 2.0.12-r0 |
| Chainguard | syncthing-compat | 0 | 2.0.11-r0 |
| Chainguard | syncthing-fips | 0 | 2.0.12-r0 |
| Chainguard | syncthing-fips-compat | 0 | 2.0.11-r0 |
| Chainguard | teleport-17 | 0 | 17.7.7-r1 |
| Chainguard | teleport-17-kube-agent-updater | 0 | 17.7.7-r1 |
| Chainguard | teleport-17-kube-agent-updater-compat | 0 | 17.7.7-r1 |
| Chainguard | teleport-17-operator | 0 | 17.7.7-r1 |
| Chainguard | teleport-17-operator-compat | 0 | 17.7.7-r1 |
| Chainguard | teleport-18 | 0 | 18.2.10-r0 |
| Chainguard | teleport-18-kube-agent-updater | 0 | 18.2.10-r0 |
| Chainguard | teleport-18-kube-agent-updater-compat | 0 | 18.2.10-r0 |
| Chainguard | teleport-18-operator | 0 | 18.2.10-r0 |
| Chainguard | teleport-18-operator-compat | 0 | 18.2.10-r0 |
| Chainguard | traefik-2.11 | 0 | 2.11.29-r2 |
| Chainguard | traefik-3.3 | 0 | 3.3.7-r7 |
| Chainguard | traefik-3.4 | 0 | 3.4.5-r3 |
| Chainguard | traefik-3.5 | 0 | 3.5.3-r1 |
| Chainguard | traefik-fips-2.11 | 0 | 2.11.29-r1 |
| Chainguard | traefik-fips-3.3 | 0 | 3.3.7-r7 |
| Chainguard | traefik-fips-3.4 | 0 | 3.4.5-r3 |
| Chainguard | traefik-fips-3.5 | 0 | 3.5.3-r1 |
| Chainguard | volsync | 0 | 0.14.0-r1 |
| Chainguard | volsync-cli | 0 | 0.13.1-r1 |
Related vulnerabilities
- CVE-2025-64702 quic-go is an implementation of the QUIC protocol in Go. Also affects github.com/quic-go/quic-go
- CVE-2024-53259 quic-go is an implementation of the QUIC protocol in Go. Also affects github.com/quic-go/quic-go
- CVE-2024-22189 quic-go is an implementation of the QUIC protocol in Go. Also affects github.com/quic-go/quic-go
- CVE-2026-34986 Go JOSE provides an implementation of the Javascript Object Signing and Encryption set of… Also affects caddy
- CVE-2026-33186 gRPC-Go is the Go language implementation of gRPC. Also affects caddy
- CVE-2026-30836 Step CA is an online certificate authority for secure, automated certificate management… Also affects caddy
- CVE-2026-27141 Due to missing nil check, sending 0x0a-0x0f HTTP/2 frames will cause a running server to… Also affects caddy
- CVE-2026-26958 filippo.io/edwards25519 is a Go library implementing the edwards25519 elliptic curve with… Also affects caddy