CVE-2023-49295
quic-go's path validation mechanism can cause denial of service
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
6.4
quic-go's path validation mechanism can cause denial of service
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
CVE-2023-49295- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2024-0394
6.4
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
EUVD-2024-0394- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-ppxx-5m9h-6vxf
6.4
quic-go's path validation mechanism can be exploited to cause denial of service
An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate.
I published a more detailed description of the attack and its mitigation in this blog post: https://seemann.io/posts/2023-12-18-exploiting-quics-path-validation/
There's no way to mitigate this attack, please update quic-go to a version that contains the fix.
- Record
GHSA-ppxx-5m9h-6vxf- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
NVD
6.4
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
CVE-2023-49295- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVAZL-33285
6.5
CVE-2023-49295 affecting package coredns for versions less than 1.11.1-5
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
AZL-33285- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVAZL-34627
6.5
CVE-2023-49295 affecting package coredns for versions less than 1.11.1-2
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
AZL-34627- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 9 moreShow less
OSV
6.4
quic-go's path validation mechanism can cause denial of service
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
CVE-2023-49295- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2023-49295
6.5
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
DEBIAN-CVE-2023-49295- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-ppxx-5m9h-6vxf
6.4
quic-go's path validation mechanism can be exploited to cause denial of service
An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate.
I published a more detailed description of the attack and its mitigation in this blog post: https://seemann.io/posts/2023-12-18-exploiting-quics-path-validation/
There's no way to mitigate this attack, please update quic-go to a version that contains the fix.
- Record
GHSA-ppxx-5m9h-6vxf- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVRHSA-2024:0855
6.5
Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.4 Product Security and Bug Fix Update
- Record
RHSA-2024:0855- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2023-49295
6.4
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. An attacker can cause its peer to run out of memory sending a large number of PATH_CHALLENGE frames. The receiver is supposed to respond to each PATH_CHALLENGE frame with a PATH_RESPONSE frame. The attacker can prevent the receiver from sending out (the vast majority of) these PATH_RESPONSE frames by collapsing the peers congestion window (by selectively acknowledging received packets) and by manipulating the peer's RTT estimate. This vulnerability has been patched in versions 0.37.7, 0.38.2 and 0.39.4.
- Record
UBUNTU-CVE-2023-49295- CVSS 3.1
- 6.4 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H - CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGO-2024-2459 No score
Denial of service via path validation in github.com/quic-go/quic-go
Denial of service via path validation in github.com/quic-go/quic-go
- Record
GO-2024-2459- Updated
- 2026-11-02
OSVopenSUSE-RU-2026:21160-1 No score
Recommended update for dnscrypt-proxy
This update for dnscrypt-proxy fixes the following issues:
Changes in dnscrypt-proxy:
-
Update to version 2.1.16
- The "tls_cipher_suite" option is now a no-op. Modern TLS stacks no longer expose cipher suite selection in a meaningful way, and the option had become misleading
- A log size of 0 no longer means "unlimited"; it now correctly disables rotation by size
- A new "tls_prefer_rsa" option has been added to prefer RSA cipher suites during the TLS handshake, useful on systems without hardware AES
- The IP allow/block plugins now support CIDR ranges in addition to single addresses and prefix matching
- Forwarding rules now support
$RESOLVCONF:<file>to pick up upstream resolvers from a resolv.conf-style file, complementing the existing$DHCPsyntax - Servers that hit a transient high RTT could previously stay penalized forever and never come back into rotation; their RTT estimate now decays so they can recover
- Servers are no longer penalized for slow responses when the response is actually being served from the stale cache
- The HTTP transport now handles
Alt-Svc: clearproperly and reuses HTTP connections more aggressively - The cache TTL is now an explicit, configurable parameter rather than being derived implicitly
- The ""-resolve"" command now reports incomplete DNSSEC support instead of silently treating partial signatures as a success
- "jsdelivr is now offered as an alternative source URL for resolver lists, providing more redundancy when the primary mirrors are unreachable
-
boo#1260280: vendored google.golang.org/grpc v1.80.0
-
boo#1265785: vendored golang.org/x/net v0.54.0
-
Update to version 2.1.15
- Proxy hostnames (when using SOCKS/HTTP proxies) are now pre-resolved using bootstrap resolvers if they are domain names
- Dynamically reduces timeouts as the connection limit is approached
- Fixed double-bracketing of IPv6 addresses in DoH stamps
- Cache statistics are now more accurate by only counting queries that actually participate in caching
- Multiple IP addresses per hostname are now cached instead of randomly selecting one
-
Update to version 2.1.14
- Added support for client IP address encryption in logs
-
Update to version 2.1.13
- Manual configuration reload via SIGHUP is now supported regardless of the hot-reload setting, providing more flexibility for system administrators
- Fixed a regression in IP prefix matching for allow/block lists that could cause incorrect filtering behavior
- the generate-domains-blocklist script now handles poor network conditions more gracefully
-
Update to version 2.1.12
- weighted Power of Two (WP2) load balancing strategy has been implemented as the default
- optional Prometheus metrics endpoint has been added for monitoring
- additional records in queries are now properly removed before forwarding
- simple view UI has been removed
-
Update to version 2.1.11
- web-based monitoring user interface added
- configuration files hot-reloading implemented
- HTTP/3 probing
- added parallel downloading of block lists
-
Updated to version 2.1.8
- Dependencies have been updated, notably the QUIC implementation, which could be vulnerable to denial-of-service attacks.
- In forwarding rules, the target can now optionally include a non-standard DNS port number. The port number is also now optional when using IPv6.
- An annoying log message related to permissions on Windows has been suppressed.
- Resolver IP addresses can now be refreshed more frequently. Additionally, jitter has been introduced to prevent all resolvers from being refreshed simultaneously. Further changes have been implemented to mitigate issues arising from multiple concurrent attempts to resolve a resolver's IP address.
- An empty value for "tls_cipher_suite" is now equivalent to leaving the property undefined.…
- Record
openSUSE-RU-2026:21160-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13570-1 No score
syncthing-1.27.2-1.1 on GA media
These are all security issues fixed in the syncthing-1.27.2-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13570-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14626-1 No score
kubo-0.32.1-1.1 on GA media
These are all security issues fixed in the kubo-0.32.1-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14626-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/quic-go/quic-goGo |
0.40.0 to 0.40.0 | 0.40.1 |
github.com/quic-go/quic-goGo |
0.39.0 up to 0.39.4 | 0.39.4 |
github.com/quic-go/quic-goGo |
0.38.0 up to 0.38.2 | 0.38.2 |
github.com/quic-go/quic-goGo |
before 0.37.7 | 0.37.7 |
corednsAzure Linux:2 |
before 1.11.1-5 | 1.11.1-5 |
corednsAzure Linux:3 |
before 1.11.1-2 | 1.11.1-2 |
golang-github-lucas-clemente-quic-goDebian:12 |
All versions, plus listed versions 0.29.0-10.29.2-10.29.2-20.29.2-30.37.0-1 Show 19 moreShow less0.37.4-10.37.4-1~bpo12+10.38.2-10.38.2-20.46.0-10.46.0-20.46.0-2~bpo12+10.50.0-10.50.1-10.50.1-20.54.0-10.54.0-20.54.0-30.54.1-10.55.0-10.59.0-10.59.0-20.59.0-2~bpo13+10.64.1-1 |
None known |
golang-github-lucas-clemente-quic-goDebian:13 |
before 0.38.2-1 | 0.38.2-1 |
golang-github-lucas-clemente-quic-goDebian:14 |
before 0.38.2-1 | 0.38.2-1 |
github.com/quic-go/quic-goGo |
0.40.0 up to 0.40.1 | 0.40.1 |
Show 14 moreShow less
| Package | Affected | Fixed |
|---|---|---|
github.com/quic-go/quic-goGo |
before 0.37.7, 0.38.0 up to 0.38.2, 0.39.0 up to 0.39.4, 0.40.0 up to 0.40.1 | 0.37.70.38.20.39.40.40.1 |
receptorRed Hat:ansible_automation_platform_developer:2.4::el8 |
before 0:1.4.4-1.el8ap | 0:1.4.4-1.el8ap |
receptorRed Hat:ansible_automation_platform_inside:2.4::el8 |
before 0:1.4.4-1.el8ap | 0:1.4.4-1.el8ap |
receptorRed Hat:ansible_automation_platform:2.4::el8 |
before 0:1.4.4-1.el8ap | 0:1.4.4-1.el8ap |
receptorRed Hat:ansible_automation_platform_developer:2.4::el9 |
before 0:1.4.4-1.el9ap | 0:1.4.4-1.el9ap |
receptorRed Hat:ansible_automation_platform_inside:2.4::el9 |
before 0:1.4.4-1.el9ap | 0:1.4.4-1.el9ap |
receptorRed Hat:ansible_automation_platform:2.4::el9 |
before 0:1.4.4-1.el9ap | 0:1.4.4-1.el9ap |
golang-github-lucas-clemente-quic-goUbuntu:22.04:LTS |
All versions, plus listed versions 0.18.0-30.24.0-10.25.0-1 |
None known |
golang-github-lucas-clemente-quic-goUbuntu:24.04:LTS |
All versions, plus listed versions 0.37.4-10.38.2-1 |
None known |
golang-github-lucas-clemente-quic-goUbuntu:25.10 |
All versions, plus listed versions 0.50.0-10.50.1-2 |
None known |
golang-github-lucas-clemente-quic-goUbuntu:26.10 |
All versions, plus listed versions 0.59.0-2 |
None known |
golang-github-lucas-clemente-quic-goUbuntu:26.04:LTS |
All versions, plus listed versions 0.50.1-20.59.0-2 |
None known |
dnscrypt-proxyopenSUSE:Leap 16.0 From an advisory covering 4 CVEs |
before 2.1.16-bp160.1.1 | 2.1.16-bp160.1.1 |
kuboopenSUSE:Tumbleweed |
before 0.32.1-1.1 | 0.32.1-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2023-49295 is a medium vulnerability (CVSS 6.4) in Quic-go, published January 10, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.20%, the 68th percentile. Fixed in github.com/quic-go/quic-go 0.40.1.
References
github.com/quic-go/quic-go/security/advisories/GHSA-ppxx-5m9h-6vxf
github.com/quic-go/quic-go/commit/17fc98c2d81dbe685c19702dc694a9d606ac56dc
github.com/quic-go/quic-go/commit/21609ddfeff93668c7625a85eb09f1541fdad965
github.com/quic-go/quic-go/commit/3a9c18bcd27a01c551ac9bf8bd2b4bded77c189a
github.com/quic-go/quic-go/commit/554d543b50b917369fb1394cc5396d928166cf49
github.com/quic-go/quic-go/commit/6cc3d58935426191296171a6c0d1ee965e10534e
Show 26 moreShow less
github.com/quic-go/quic-go/commit/9aaefe19fc3dc8c8917cc87e6128bb56d9e9e6cc
github.com/quic-go/quic-go/commit/a0ffa757499913f7be69aa78f573a6aee3430ae4
github.com/quic-go/quic-go/commit/d7aa627ebde91cf799ada2a07443faa9b1e5abb8
lists.fedoraproject.org/archives/list/[email protected]/message/G5RSHDTVMYAIGYVVFGKTMFHAZJMA3EVV
lists.fedoraproject.org/archives/list/[email protected]/message/ZE7IOKXX5AATU2WR3V76X5Y3A44QAATG
nvd.nist.gov/vuln/detail/CVE-2023-49295
seemann.io/posts/2023-12-18-exploiting-quics-path-validation
github.com/advisories/GHSA-ppxx-5m9h-6vxf
github.com/CVEProject/cvelistV5/tree/main/cves/2023/49xxx/CVE-2023-49295.json
security-tracker.debian.org/tracker/CVE-2023-49295
github.com/quic-go/quic-go
access.redhat.com/errata/RHSA-2024:0855
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2257815
security.access.redhat.com/data/csaf/v2/advisories/2024/rhsa-2024_0855.json
access.redhat.com/security/cve/CVE-2023-49295
cve.org/CVERecord?id=CVE-2023-49295
ubuntu.com/security/CVE-2023-49295
bugzilla.suse.com/1222473
bugzilla.suse.com/1235156
bugzilla.suse.com/1260280
bugzilla.suse.com/1265785
suse.com/security/cve/CVE-2023-49295
suse.com/security/cve/CVE-2024-22189
suse.com/security/cve/CVE-2026-33186
suse.com/security/cve/CVE-2026-33814
Left out here: the rest of 1 source description. The JSON record has them.