Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions secadv/20260813.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
OpenSSL Security Advisory [13th August 2026]
============================================

Unbounded Memory Growth in QUIC Server Incoming Channel Queue (CVE-2026-14456)
==============================================================================

Severity: Low

Issue summary: When an OpenSSL QUIC server (Listener SSL object) processes
valid QUIC Initial packets for unknown destination connection IDs, it
can allocate and queue new incoming channels without enforcing any limit.

Impact summary: A remote peer that can make many Initial packets reach the
server listener faster than the application accepts connections, can cause the
memory allocated to store the per-channel state to grow without any limits,
potentially making the QUIC listener unavailable and causing Denial of Service.

CWE: CWE-770: Allocation of Resources Without Limits or Throttling

Description: The function that handles inbound QUIC packets uses
Connection-Id from the packet header to find an existing connection
(QUIC channel). If no existing connection is found and the packet
type is INITIAL, the function treats the packet as a new connection. It
allocates a new channel object and inserts it into a queue where it
waits to be accepted by the local application with SSL_accept(3ossl).
The memory occupied by these initial channel objects may grow
without bounds if the application is not able to call SSL_accept()
frequently enough to serve these inbound connection requests.

The issue is present since OpenSSL 3.5 when the QUIC server implementation
was added.

The fix introduces a limit for pending connections. The default limit is set
to 256 pending connections (waiting to be accepted by the local application).
Applications may change the default by calling SSL_set_value_uint(3ossl).

FIPS impact: no
The FIPS module is not affected as the QUIC implementation is outside of
the OpenSSL FIPS module boundary.

OpenSSL 4.0, 3.6 and 3.5 are vulnerable to this issue.

OpenSSL 3.4, 3.0, 1.1.1 and 1.0.2 are not affected by this issue.

OpenSSL 4.0 users should upgrade to OpenSSL 4.0.2 once it is released.
OpenSSL 3.6 users should upgrade to OpenSSL 3.6.4 once it is released.
OpenSSL 3.5 users should upgrade to OpenSSL 3.5.8 once it is released.

Due to the low severity of this issue we are not issuing new releases of
OpenSSL at this time. The fix will be included in the next release of 4.0,
3.6, and 3.5 branches, once it becomes available. The fix is also available
in commits f2f1465 (for 4.0), 4084152 (for 3.6), and 08e7756 (for 3.5) in
the OpenSSL git repository.

This issue was reported on 25 June 2026 by Filipe Casal (Trail of Bits)
in collaboration with OpenAI.
The fix has been developed by Alexandr Nedvedicky.

General Advisory Notes
======================

URL for this Security Advisory:
https://openssl-library.org/news/secadv/20260813.txt

Note: the online version of the advisory may be updated with additional details
over time.

For details of OpenSSL severity classifications please see:
https://openssl-library.org/policies/general/security-policy/
132 changes: 132 additions & 0 deletions secjson/CVE-2026-14456.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "OpenSSL",
"vendor": "OpenSSL",
"versions": [
{
"lessThan": "4.0.2",
"status": "affected",
"version": "4.0.0",
"versionType": "semver"
},
{
"lessThan": "3.6.4",
"status": "affected",
"version": "3.6.0",
"versionType": "semver"
},
{
"lessThan": "3.5.8",
"status": "affected",
"version": "3.5.0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "Filipe Casal (Trail of Bits)"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Alexandr Nedvedicky"
}
],
"datePublic": "2026-08-13T09:00:13+02:00",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "Issue summary: When an OpenSSL QUIC server (Listener SSL object) processes<br>valid QUIC Initial packets for unknown destination connection IDs, it<br>can allocate and queue new incoming channels without enforcing any limit.<br><br>Impact summary: A remote peer that can make many Initial packets reach the<br>server listener faster than the application accepts connections, can cause the<br>memory allocated to store the per-channel state to grow without any limits,<br>potentially making the QUIC listener unavailable and causing Denial of Service.<br><br>CWE: CWE-770: Allocation of Resources Without Limits or Throttling<br><br>Description: The function that handles inbound QUIC packets uses<br>Connection-Id from the packet header to find an existing connection<br>(QUIC channel). If no existing connection is found and the packet<br>type is INITIAL, the function treats the packet as a new connection. It<br>allocates a new channel object and inserts it into a queue where it<br>waits to be accepted by the local application with SSL_accept(3ossl).<br>The memory occupied by these initial channel objects may grow<br>without bounds if the application is not able to call SSL_accept()<br>frequently enough to serve these inbound connection requests.<br><br>The issue is present since OpenSSL 3.5 when the QUIC server implementation<br>was added.<br><br>The fix introduces a limit for pending connections. The default limit is set<br>to 256 pending connections (waiting to be accepted by the local application).<br>Applications may change the default by calling SSL_set_value_uint(3ossl).<br><br>FIPS impact: no<br>The FIPS module is not affected as the QUIC implementation is outside of<br>the OpenSSL FIPS module boundary."
}
],
"value": "Issue summary: When an OpenSSL QUIC server (Listener SSL object) processes\nvalid QUIC Initial packets for unknown destination connection IDs, it\ncan allocate and queue new incoming channels without enforcing any limit.\n\nImpact summary: A remote peer that can make many Initial packets reach the\nserver listener faster than the application accepts connections, can cause the\nmemory allocated to store the per-channel state to grow without any limits,\npotentially making the QUIC listener unavailable and causing Denial of Service.\n\nCWE: CWE-770: Allocation of Resources Without Limits or Throttling\n\nDescription: The function that handles inbound QUIC packets uses\nConnection-Id from the packet header to find an existing connection\n(QUIC channel). If no existing connection is found and the packet\ntype is INITIAL, the function treats the packet as a new connection. It\nallocates a new channel object and inserts it into a queue where it\nwaits to be accepted by the local application with SSL_accept(3ossl).\nThe memory occupied by these initial channel objects may grow\nwithout bounds if the application is not able to call SSL_accept()\nfrequently enough to serve these inbound connection requests.\n\nThe issue is present since OpenSSL 3.5 when the QUIC server implementation\nwas added.\n\nThe fix introduces a limit for pending connections. The default limit is set\nto 256 pending connections (waiting to be accepted by the local application).\nApplications may change the default by calling SSL_set_value_uint(3ossl).\n\nFIPS impact: no\nThe FIPS module is not affected as the QUIC implementation is outside of\nthe OpenSSL FIPS module boundary."
}
],
"metrics": [
{
"format": "other",
"other": {
"content": {
"text": "Low"
},
"type": "https://openssl-library.org/policies/general/security-policy/"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-770",
"description": "CWE-770 Allocation of Resources Without Limits or Throttling",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"orgId": "00000000-0000-4000-9000-000000000000",
"shortName": "openssl"
},
"references": [
{
"name": "OpenSSL Advisory",
"tags": [
"vendor-advisory"
],
"url": "https://openssl-library.org/news/secadv/20260813.txt"
},
{
"name": "4.0 branch git commit",
"tags": [
"patch"
],
"url": "https://github.com/openssl/openssl/commit/f2f1465f2d2e5c61dfeac4d20fd093797d821139"
},
{
"name": "3.6 branch git commit",
"tags": [
"patch"
],
"url": "https://github.com/openssl/openssl/commit/4084152e040329ca0194c4c1750b9b46d00a5b6b"
},
{
"name": "3.5 branch git commit",
"tags": [
"patch"
],
"url": "https://github.com/openssl/openssl/commit/08e7756c3900bcfd77a720e7b74e27d6e4ed01a9"
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "Unbounded Memory Growth in QUIC Server Incoming Channel Queue",
"x_generator": {
"engine": "Vulnogram 0.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "00000000-0000-4000-9000-000000000000",
"cveId": "CVE-2026-14456",
"requesterUserId": "00000000-0000-4000-9000-000000000000",
"serial": 1,
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1"
}
Loading