CVE-2014-3707
NoneCVSS
—
EPSS
5.1%
Published
Nov 15, 2014
CISA due date
—
Cloudanix analysis
A networking library used by many programs could accidentally send pieces of private computer memory to websites during certain data uploads.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Library
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds read in curl_easy_duphandle when CURLOPT_COPYPOSTFIELDS is set, causing libcurl to send excess memory contents as part of an HTTP POST body to a remote server.
Why it matters to the business
Remote servers can obtain fragments of process memory that may contain credentials, session tokens, or other sensitive data, creating confidentiality exposure across any application or system that ships or links against the affected library versions.
How an attack unfolds
An attacker hosts a web server and crafts a scenario where a vulnerable client application performs an HTTP POST using CURLOPT_COPYPOSTFIELDS. When the client later duplicates the easy handle, the malformed copy sends additional memory bytes in the request body, which the attacker's server records.
How to fix it
Upgrade libcurl to a release newer than 7.38.0. Rebuild and redeploy all dependent applications and operating-system packages. Where immediate patching is impossible, disable or replace code paths that use CURLOPT_COPYPOSTFIELDS.
How to confirm the fix worked
Confirm installed libcurl version is outside the 7.17.1-7.38.0 range; exercise client code paths that duplicate handles after setting CURLOPT_COPYPOSTFIELDS and verify that only intended POST data is transmitted.
Typical attack path
- Attacker stands up a web server that accepts POST requests
- Victim client application builds an easy handle with CURLOPT_COPYPOSTFIELDS and performs a POST to the attacker-controlled URL
- Client code calls curl_easy_duphandle on the active handle
- Out-of-bounds data is transmitted in the subsequent request
- Attacker inspects captured POST bodies for readable memory artifacts
How to detect it
Scan endpoints and build artifacts for libcurl versions 7.17.1 through 7.38.0; review source or binary references to CURLOPT_COPYPOSTFIELDS in client applications; no distinctive post-exploitation log artifacts exist because the disclosure occurs inside normal POST traffic.
What your security team should do
- Prioritize replacement of all libcurl instances between 7.17.1 and 7.38.0
- Inventory applications that statically or dynamically link libcurl and test for use of CURLOPT_COPYPOSTFIELDS
- Add libcurl version checks to vulnerability scanning and build pipelines
The record
The curl_easy_duphandle function in libcurl 7.17.1 through 7.38.0, when running with the CURLOPT_COPYPOSTFIELDS option, does not properly copy HTTP POST data for an easy handle, which triggers an out-of-bounds read that allows remote web servers to read sensitive memory information.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | curl | 0 | 7.38.0-3 |
| Debian:12 | curl | 0 | 7.38.0-3 |
| Debian:13 | curl | 0 | 7.38.0-3 |
| Debian:6.0 | curl | 0 | 7.21.0-2.1+squeeze10 |
| Debian:7 | curl | 0 | 7.26.0-1+wheezy11 |
| Mageia:3 | curl | 0 | 7.28.1-6.6.mga3 |
| Mageia:4 | curl | 0 | 7.34.0-1.4.mga4 |
| Red Hat:enterprise_linux:6::client | curl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::client | curl-debuginfo | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::client | libcurl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::client | libcurl-devel | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::computenode | curl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::computenode | curl-debuginfo | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::computenode | libcurl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::computenode | libcurl-devel | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::server | curl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::server | curl-debuginfo | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::server | libcurl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::server | libcurl-devel | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::workstation | curl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::workstation | curl-debuginfo | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::workstation | libcurl | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:6::workstation | libcurl-devel | 0 | 0:7.19.7-46.el6 |
| Red Hat:enterprise_linux:7::client | curl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::client | curl-debuginfo | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::client | libcurl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::client | libcurl-devel | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::computenode | curl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::computenode | curl-debuginfo | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::computenode | libcurl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::computenode | libcurl-devel | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::server | curl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::server | curl-debuginfo | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::server | libcurl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::server | libcurl-devel | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::workstation | curl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::workstation | curl-debuginfo | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::workstation | libcurl | 0 | 0:7.29.0-25.el7 |
| Red Hat:enterprise_linux:7::workstation | libcurl-devel | 0 | 0:7.29.0-25.el7 |
| Ubuntu:14.04:LTS | curl | 0 | 7.35.0-1ubuntu2.2 |
Related vulnerabilities
- CVE-2024-11053 When asked to both use a `.netrc` file for credentials and to follow HTTP redirects, curl… Also affects curl
- CVE-2024-9681 When curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent… Also affects curl
- CVE-2024-8096 When curl is told to use the Certificate Status Request TLS extension, often referred to… Also affects curl
- CVE-2023-46219 When saving HSTS data to an excessively long file name, curl could end up removing all… Also affects curl
- CVE-2023-46218 This flaw allows a malicious HTTP server to set "super cookies" in curl that are then… Also affects curl
- CVE-2023-38545 This flaw makes curl overflow a heap based buffer in the SOCKS5 proxy handshake. Also affects curl
- CVE-2023-38546 This flaw allows an attacker to insert cookies at will into a running program using… Also affects curl
- CVE-2023-28322 An information disclosure vulnerability exists in curl <v8.1.0 when doing HTTP(S)… Also affects curl