CVE-2024-4741
High · 7.5CVSS
7.5
EPSS
2.9%
Published
Nov 13, 2024
CISA due date
—
Cloudanix analysis
A rarely used function in OpenSSL can let attackers crash servers or potentially run malicious code, so organizations should update the library even though most applications are not affected.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Library
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Calling SSL_free_buffers on a partially processed TLS record frees internal buffers that remain in use, resulting in a use-after-free condition that can corrupt memory, cause denial of service, or enable arbitrary code execution.
Why it matters to the business
Applications that directly invoke the rarely-used SSL_free_buffers function face elevated risk of crashes or remote code execution; most deployments are unaffected but must still verify they do not call the function and apply the patch to eliminate residual exposure.
How an attack unfolds
An attacker sends a TLS record header without the full body or sends a full record but reads only part of the application data, then triggers an application call to SSL_free_buffers while the buffer is still referenced, leading to use-after-free.
How to fix it
Upgrade OpenSSL to the commit 704f725b96aa373ee45ecfb23f6abfe8be8d9177 or later; applications should avoid direct calls to SSL_free_buffers and review any custom TLS buffer-management code.
How to confirm the fix worked
Confirm the installed OpenSSL version or commit contains 704f725b96aa373ee45ecfb23f6abfe8be8d9177; audit source for direct calls to SSL_free_buffers and test with partial-record TLS traffic.
Typical attack path
- Establish a TLS connection to the target
- Send a partial TLS record header or a full record followed by partial application-data reads
- Induce the application to invoke SSL_free_buffers on the connection
- Trigger reuse of the now-freed buffer to achieve memory corruption or code execution
How to detect it
Review application source and logs for direct calls to SSL_free_buffers; inspect TLS traffic logs for partial record patterns followed by crashes or unexpected memory behavior; no public exploitation artifacts are known.
What your security team should do
- Immediately inventory all OpenSSL deployments and identify any code paths that call SSL_free_buffers
- Apply the fixed commit 704f725b96aa373ee45ecfb23f6abfe8be8d9177 to all affected instances
- Add static-analysis rules to block future direct use of SSL_free_buffers
- Monitor vendor advisories for downstream packages that embed the vulnerable OpenSSL version
The record
Issue summary: Calling the OpenSSL API function SSL_free_buffers may cause memory to be accessed that was previously freed in some situations Impact summary: A use after free can have a range of potential consequences such as the corruption of valid data, crashes or execution of arbitrary code. However, only applications that directly call the SSL_free_buffers function are affected by this issue. Applications that do not call this function are not vulnerable. Our investigations indicate that this function is rarely used by applications. The SSL_free_buffers function is used to free the internal OpenSSL buffer used when processing an incoming record from the network. The call is only expected to succeed if the buffer is not currently in use. However, two scenarios have been identified where the buffer is freed even when still in use. The first scenario occurs where a record header has been received from the network and processed by OpenSSL, but the full record body has not yet arrived. In this case calling SSL_free_buffers will succeed even though a record has only been partially processed and the buffer is still in use. The second scenario occurs where a full record containing application data has been received and processed by OpenSSL but the application has only read part of this data. Again a call to SSL_free_buffers will succeed even though the buffer is still in use. While these scenarios could occur accidentally during normal operation a malicious attacker could attempt to engineer a stituation where this occurs. We are not aware of this issue being actively exploited. The FIPS modules in 3.3, 3.2, 3.1 and 3.0 are 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.14-r0 |
| Alpine:v3.18 | openssl | 0 | 3.1.6-r0 |
| Alpine:v3.19 | openssl | 0 | 3.1.6-r0 |
| Alpine:v3.20 | openssl | 0 | 3.3.0-r3 |
| Alpine:v3.21 | openssl | 0 | 3.3.0-r3 |
| Alpine:v3.22 | openssl | 0 | 3.3.0-r3 |
| Chainguard | openssl-provider-fips | 0 | 3.0.9-r1 |
| Debian:11 | openssl | 0 | 1.1.1n-0+deb11u6 |
| Debian:11 | openssl | 0 | 1.1.1w-0+deb11u2 |
| 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.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.91.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise Live Patching 15 SP4 | openssl-1_1-livepatches | 0 | 0.4-150400.3.11.1 |
| SUSE:Linux Enterprise Live Patching 15 SP5 | openssl-1_1-livepatches | 0 | 0.4-150500.6.8.1 |
| SUSE:Linux Enterprise Live Patching 15 SP7 | openssl-1_1-livepatches | 0 | 0.5-150700.13.3.1 |
| SUSE:Linux Enterprise Micro 5.1 | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Micro 5.2 | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Micro 5.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise Micro 5.3 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise Micro 5.4 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise Micro 5.4 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise Micro 5.5 | openssl-1_1 | 0 | 1.1.1l-150500.17.31.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | openssl-1_1 | 0 | 1.1.1l-150500.17.31.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | openssl-3 | 0 | 3.0.8-150500.5.36.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | openssl-1_1 | 0 | 1.1.1w-150600.5.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | openssl-3 | 0 | 3.1.4-150600.5.7.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | openssl-1_1 | 0 | 1.1.1w-150600.5.3.1 |
| SUSE:Linux Enterprise Module for Legacy 15 SP6 | openssl-1_1 | 0 | 1.1.1w-150600.5.3.1 |
| SUSE:Linux Enterprise Server 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.107.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.107.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | openssl-1_1 | 0 | 1.1.1d-150200.11.91.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.107.1 |
| SUSE:Manager Proxy 4.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Manager Proxy 4.3 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| SUSE:Manager Server 4.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| SUSE:Manager Server 4.3 | openssl-3 | 0 | 3.0.8-150400.4.57.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 |
| openSUSE:Leap 15.5 | openssl-1_1 | 0 | 1.1.1l-150500.17.31.1 |
| openSUSE:Leap 15.5 | openssl-3 | 0 | 3.0.8-150500.5.36.1 |
| openSUSE:Leap 15.6 | openssl-1_1 | 0 | 1.1.1w-150600.5.3.1 |
| openSUSE:Leap 15.6 | openssl-3 | 0 | 3.1.4-150600.5.7.1 |
| openSUSE:Leap Micro 5.3 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| openSUSE:Leap Micro 5.3 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| openSUSE:Leap Micro 5.4 | openssl-1_1 | 0 | 1.1.1l-150400.7.69.1 |
| openSUSE:Leap Micro 5.4 | openssl-3 | 0 | 3.0.8-150400.4.57.1 |
| openSUSE:Tumbleweed | openssl-1_1 | 0 | 1.1.1w-11.1 |
| openSUSE:Tumbleweed | openssl-3 | 0 | 3.1.4-11.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-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-2511 Issue summary: Some non-default TLS server configurations can cause unbounded memory… 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