CVE-2024-2511
Medium · 5.9CVSS
5.9
EPSS
52.4%
Published
Apr 8, 2024
CISA due date
—
Cloudanix analysis
A vulnerable TLS server configuration can let someone repeatedly connect until the service runs out of memory and becomes unavailable.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a denial-of-service flaw in OpenSSL TLS servers using TLS 1.3 with the non-default SSL_OP_NO_TICKET option enabled. Under certain conditions, the TLS session cache can enter an incorrect state and fail to flush entries as it fills, causing unbounded memory growth. A remote unauthenticated client can repeatedly create TLS 1.3 session activity that forces the affected server process to consume increasing memory until performance degrades, the process is killed by the operating system, or the service becomes unavailable. TLS clients are not affected, OpenSSL 1.0.2 is not affected, and the OpenSSL 3.0, 3.1, and 3.2 FIPS modules are not affected.
Why it matters to the business
The practical risk is service instability or outage for applications, proxies, APIs, load balancers, VPN components, or other network-facing services that use affected OpenSSL TLS server code in the vulnerable configuration. Because exploitation is remote and unauthenticated but requires a specific non-default server configuration, exposure is narrower than a typical OpenSSL-wide issue; however, the EPSS score is elevated, so internet-facing TLS services should be reviewed promptly. Successful exploitation can cause degraded customer access, failed transactions, increased infrastructure load from restarts, and operational incidents due to memory exhaustion.
How an attack unfolds
An attacker first identifies a TLS service that supports TLS 1.3 and is backed by an affected OpenSSL build. The attacker then determines or assumes that the service is configured with SSL_OP_NO_TICKET and does not have a mitigating early-data anti-replay configuration. The attacker opens repeated TLS 1.3 connections and drives session establishment patterns that cause OpenSSL's server-side session cache to retain entries incorrectly. Because the cache fails to flush as intended, memory usage in the server process grows over time. If the traffic continues, the process may exhaust available memory, trigger operating-system OOM handling, crash, restart, or become too slow to serve legitimate users. The attack does not provide code execution or data theft by itself; its value is disruption of availability.
How to fix it
Upgrade OpenSSL to a fixed version supplied by the operating system, application vendor, appliance vendor, container base image, or OpenSSL project. For source builds from the affected Git repository, ensure the fix containing commit 7e4d731b1c07201ad9374c1cd9ac5263bdf35bce is present. Where packaged releases are used, deploy the vendor-fixed OpenSSL maintenance release or backport for the affected branch, commonly including fixed OpenSSL 3.0.x, 3.1.x, and 3.2.x updates. Restart or reload all services that link OpenSSL after patching; updating the library on disk is not sufficient for already-running processes. If immediate patching is not possible, reduce exposure by disabling the vulnerable configuration where feasible: avoid SSL_OP_NO_TICKET for TLS 1.3 servers, review session-cache settings, consider enabling appropriate early-data anti-replay protections if early data is used, rate-limit suspicious TLS handshakes, and place vulnerable services behind load balancers or controls that can absorb abusive connection patterns. Confirm that statically linked applications and container images are rebuilt with the fixed OpenSSL code.
How to confirm the fix worked
Confirm the OpenSSL runtime and linked library versions used by each TLS server, not only the system package version. Use commands such as openssl version -a, package-manager inventory, container image inspection, software bill of materials data, and application dependency scans. For custom builds, verify that commit 7e4d731b1c07201ad9374c1cd9ac5263bdf35bce or an equivalent vendor backport is present. Inspect server code and configuration for SSL_OP_NO_TICKET, SSL_CTX_set_options, session-cache settings, and TLS 1.3 enablement. After patching, restart affected services and verify that their loaded OpenSSL library is the fixed build using process library mapping tools such as ldd, pmap, /proc/<pid>/maps, or platform equivalents. In a controlled test environment, perform repeated TLS 1.3 handshakes against the service and monitor resident memory; fixed or non-exposed services should not show unbounded session-cache-driven growth.
Typical attack path
- Discover externally reachable TLS services and fingerprint support for TLS 1.3.
- Identify services likely using affected OpenSSL versions or unpatched vendor builds.
- Target servers configured with the non-default SSL_OP_NO_TICKET option, especially where TLS session cache behavior is enabled server-side.
- Generate repeated TLS 1.3 handshakes or session activity designed to grow the affected session cache.
- Sustain the connection pattern until server process memory increases significantly.
- Cause service degradation, process termination, operating-system OOM events, or application restarts.
- Repeat the activity to keep the service unstable if no rate limiting, patch, or configuration change is applied.
How to detect it
There is no reliable single network payload or log line that uniquely proves exploitation of this issue. Detection should focus on correlated evidence: affected OpenSSL version, TLS 1.3 server role, use of SSL_OP_NO_TICKET, abnormal growth in process memory, high rates of TLS handshakes or short-lived TLS connections, and service crashes or OOM events. Review web server, reverse proxy, application, load balancer, and system logs around memory exhaustion events. Look for spikes in TLS connection attempts from one or a small set of source IPs, unusually high handshake-to-request ratios, repeated connection opens without meaningful application-layer traffic, and resident memory growth that tracks TLS connection volume. System telemetry sources should include process metrics, kernel logs, OOM-killer logs, container runtime events, service manager restart logs, reverse proxy access logs, TLS termination logs, firewall or flow logs, and EDR process telemetry. Because the issue can also happen accidentally, classify suspected exploitation only when resource exhaustion coincides with suspicious remote connection patterns against a confirmed exposed configuration.
- SSL_OP_NO_TICKET
- SSL_CTX_set_options
- SSL_OP_NO_TICKET option
- TLSv1.3
- TLS 1.3
- Out of memory
- Cannot allocate memory
- oom-killer
- Killed process
- Memory cgroup out of memory
- container killed due to memory usage
- signal 9
- exit code 137
- worker process exited on signal 9
- server reached MaxRequestWorkers
- AH00052: child pid
- upstream prematurely closed connection
- SSL_accept
What your security team should do
- Prioritize inventory of internet-facing TLS 1.3 servers using OpenSSL 3.x, especially custom-compiled applications, appliances, containers, reverse proxies, API gateways, and load balancers.
- Patch or vendor-update affected OpenSSL deployments and restart all dependent services; ensure statically linked applications and container images are rebuilt.
- Search code and configuration repositories for SSL_OP_NO_TICKET and SSL_CTX_set_options usage to identify deployments with the vulnerable non-default configuration.
- Temporarily disable SSL_OP_NO_TICKET on TLS 1.3 servers where operationally safe until patching is complete.
- Add monitoring for abnormal TLS handshake volume, rapid connection churn, process resident-memory growth, OOM-killer events, and repeated service restarts.
- Apply rate limiting or connection throttling at edge devices for excessive TLS handshakes from the same sources or networks.
- Validate that vendor appliances and bundled applications have received a backported OpenSSL fix rather than relying only on operating-system package status.
- Treat unexplained memory growth on TLS services as potentially security-relevant, even though this issue may also occur accidentally during normal operation.
The record
Issue summary: Some non-default TLS server configurations can cause unbounded memory growth when processing TLSv1.3 sessions Impact summary: An attacker may exploit certain server configurations to trigger unbounded memory growth that would lead to a Denial of Service This problem can occur in TLSv1.3 if the non-default SSL_OP_NO_TICKET option is being used (but not if early_data support is also configured and the default anti-replay protection is in use). In this case, under certain conditions, the session cache can get into an incorrect state and it will fail to flush properly as it fills. The session cache will continue to grow in an unbounded manner. A malicious client could deliberately create the scenario for this failure to force a Denial of Service. It may also happen by accident in normal operation. This issue only affects TLS servers supporting TLSv1.3. It does not affect TLS clients. The FIPS modules in 3.2, 3.1 and 3.0 are not affected by this issue. OpenSSL 1.0.2 is also not affected by this issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:9 | openssl | 0 | 1:3.2.2-6.el9_5 |
| AlmaLinux:9 | openssl-devel | 0 | 1:3.2.2-6.el9_5 |
| AlmaLinux:9 | openssl-libs | 0 | 1:3.2.2-6.el9_5 |
| AlmaLinux:9 | openssl-perl | 0 | 1:3.2.2-6.el9_5 |
| Alpine:v3.17 | openssl | 0 | 3.0.12-r5 |
| Alpine:v3.18 | openssl | 0 | 3.1.4-r6 |
| Alpine:v3.19 | openssl | 0 | 3.1.4-r6 |
| Alpine:v3.20 | openssl | 0 | 3.2.1-r2 |
| Alpine:v3.21 | openssl | 0 | 3.2.1-r2 |
| Alpine:v3.22 | openssl | 0 | 3.2.1-r2 |
| Chainguard | libcrypto3 | 0 | 3.3.0-r5 |
| Chainguard | libssl3 | 0 | 3.3.0-r5 |
| Chainguard | openssl | 0 | 3.3.0-r5 |
| Chainguard | openssl-config | 0 | 3.3.0-r5 |
| Chainguard | openssl-dbg | 0 | 3.3.0-r5 |
| Chainguard | openssl-dev | 0 | 3.3.0-r5 |
| Chainguard | openssl-doc | 0 | 3.3.0-r5 |
| Chainguard | openssl-engine-afalg | 0 | 3.3.0-r5 |
| Chainguard | openssl-engine-capi | 0 | 3.3.0-r5 |
| Chainguard | openssl-engine-loader-attic | 0 | 3.3.0-r5 |
| Chainguard | openssl-engine-padlock | 0 | 3.3.0-r5 |
| Chainguard | openssl-provider-fips | 0 | 0 |
| Chainguard | openssl-provider-fips-3.1.2 | 0 | 0 |
| Chainguard | openssl-provider-fips-3.1.2-dbg | 0 | 0 |
| Chainguard | openssl-provider-legacy | 0 | 3.3.0-r5 |
| Debian:11 | openssl | 0 | No fix |
| Debian:11 | openssl | 0 | 1.1.1w-0+deb11u2 |
| Debian:11 | openssl | 0 | 1.1.1n-0+deb11u6 |
| Debian:12 | openssl | 0 | 3.0.14-1~deb12u1 |
| Debian:13 | openssl | 0 | 3.2.2-1 |
| Mageia:9 | openssl | 0 | 3.0.13-1.mga9 |
| Mageia:9 | quictls | 0 | 3.0.14-1.1.mga9 |
| Red Hat:enterprise_linux:9::appstream | openssl | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-debuginfo | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-debugsource | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-devel | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-libs | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-libs-debuginfo | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::appstream | openssl-perl | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-debuginfo | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-debugsource | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-devel | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-libs | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-libs-debuginfo | 0 | 1:3.2.2-6.el9_5 |
| Red Hat:enterprise_linux:9::baseos | openssl-perl | 0 | 1:3.2.2-6.el9_5 |
| Rocky Linux:9 | openssl | 0 | 1:3.2.2-6.el9_5.1 |
| Rocky Linux:9 | openssl-fips-provider | 0 | 0:3.0.7-6.el9_5 |
| SUSE:Enterprise Storage 7.1 | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise Micro 5.1 | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Micro 5.2 | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Micro 5.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise Micro 5.3 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise Micro 5.4 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise Micro 5.4 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise Micro 5.5 | openssl-1_1 | 0 | 1.1.1l-150500.17.28.2 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | openssl-1_1 | 0 | 1.1.1l-150500.17.28.2 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | openssl-3 | 0 | 3.0.8-150500.5.30.1 |
| SUSE:Linux Enterprise Server 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.110.2 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.110.2 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | openssl-1_1 | 0 | 1.1.1d-150200.11.88.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.110.2 |
| SUSE:Manager Proxy 4.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Manager Proxy 4.3 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| SUSE:Manager Server 4.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| SUSE:Manager Server 4.3 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| Ubuntu:20.04:LTS | edk2 | 0 | No fix |
| Ubuntu:20.04:LTS | openssl | 0 | 1.1.1f-1ubuntu2.23 |
| Ubuntu:22.04:LTS | edk2 | 0 | No fix |
| Ubuntu:22.04:LTS | edk2 | 0 | 2022.02-3ubuntu0.22.04.4 |
| Ubuntu:22.04:LTS | nodejs | 0 | No fix |
| Ubuntu:22.04:LTS | openssl | 0 | 3.0.2-0ubuntu1.17 |
| Ubuntu:24.04:LTS | edk2 | 0 | No fix |
| Ubuntu:24.04:LTS | edk2 | 0 | 2024.02-2ubuntu0.6 |
| Ubuntu:24.04:LTS | openssl | 0 | 3.0.13-0ubuntu3.2 |
| Ubuntu:24.10 | edk2 | 0 | No fix |
| Ubuntu:24.10 | openssl | 0 | 3.2.2-1ubuntu1 |
| Ubuntu:Pro:14.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | edk2 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | nodejs | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | edk2 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | nodejs | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | edk2 | 0 | No fix |
| Ubuntu:Pro:22.04:LTS | nodejs | 0 | No fix |
| Ubuntu:Pro:FIPS-preview:22.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:FIPS-preview:22.04:LTS | openssl-fips | 0 | No fix |
| Ubuntu:Pro:FIPS-updates:18.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:FIPS-updates:22.04:LTS | openssl | 0 | 3.0.2-0ubuntu1.17+Fips1 |
| Ubuntu:Pro:FIPS-updates:22.04:LTS | openssl-fips | 0 | No fix |
| Ubuntu:Pro:FIPS-updates:24.04:LTS | openssl-fips | 0 | 3.0.13-0ubuntu3.6+Fips1 |
| Ubuntu:Pro:FIPS:16.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:FIPS:18.04:LTS | openssl | 0 | No fix |
| Ubuntu:Pro:FIPS:20.04:LTS | openssl | 0 | No fix |
| Wolfi | libcrypto3 | 0 | 3.3.0-r5 |
| Wolfi | libssl3 | 0 | 3.3.0-r5 |
| Wolfi | openssl | 0 | 3.3.0-r5 |
| Wolfi | openssl-config | 0 | 3.3.0-r5 |
| Wolfi | openssl-dbg | 0 | 3.3.0-r5 |
| Wolfi | openssl-dev | 0 | 3.3.0-r5 |
| Wolfi | openssl-doc | 0 | 3.3.0-r5 |
| Wolfi | openssl-engine-afalg | 0 | 3.3.0-r5 |
| Wolfi | openssl-engine-capi | 0 | 3.3.0-r5 |
| Wolfi | openssl-engine-loader-attic | 0 | 3.3.0-r5 |
| Wolfi | openssl-engine-padlock | 0 | 3.3.0-r5 |
| Wolfi | openssl-provider-legacy | 0 | 3.3.0-r5 |
| openSUSE:Leap 15.5 | openssl-1_1 | 0 | 1.1.1l-150500.17.28.2 |
| openSUSE:Leap 15.5 | openssl-3 | 0 | 3.0.8-150500.5.30.1 |
| openSUSE:Leap Micro 5.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| openSUSE:Leap Micro 5.3 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| openSUSE:Leap Micro 5.4 | openssl-1_1 | 0 | 1.1.1l-150400.7.66.2 |
| openSUSE:Leap Micro 5.4 | openssl-3 | 0 | 3.0.8-150400.4.54.1 |
| openSUSE:Tumbleweed | openssl-1_1 | 0 | 1.1.1w-9.1 |
| openSUSE:Tumbleweed | openssl-3 | 0 | 3.1.4-6.1 |
Related vulnerabilities
- CVE-2024-12797 Issue summary: Clients using RFC7250 Raw Public Keys (RPKs) to authenticate a server may… Also affects openssl
- CVE-2024-4741 Issue summary: Calling the OpenSSL API function SSL_free_buffers may cause memory to be… Also affects openssl
- CVE-2024-6119 Issue summary: Applications performing certificate name checks (e.g., TLS clients… Also affects openssl
- CVE-2024-5535 Issue summary: Calling the OpenSSL API function SSL_select_next_proto with an empty… Also affects openssl
- CVE-2024-4603 Issue summary: Checking excessively long DSA keys or parameters may be very slow. Also affects openssl
- CVE-2023-6237 Issue summary: Checking excessively long invalid RSA public keys may take a long time. Also affects openssl
- CVE-2024-0727 Issue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL to crash… Also affects openssl
- CVE-2023-6129 Issue summary: The POLY1305 MAC (message authentication code) implementation contains a… Also affects openssl