Every CVE Search/ Get API key

CVE-2014-3707

The curl_easy_duphandle function in libcurl 7.17.1 through 7.38.0, when running with the...

4.3 MediumFix available

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.

Exploit likelihood

5.12%Up 2.4 points since Feb 4, 2022
90%50%10%1%

What each source reports

NVD Score used 4.3

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.

Record
CVE-2014-3707
CVSS 2.0
4.3 MediumAV:N/AC:M/Au:N/C:P/I:N/A:N
Weakness
CWE-200
Updated
2026-11-02
CVE List No score

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.

Record
CVE-2014-3707
Updated
2026-11-02
EUVDEUVD-2014-3653 No score

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.

Record
EUVD-2014-3653
Updated
2026-11-03
GitHub AdvisoriesGHSA-x89w-3fj3-7gmx No score

The curl_easy_duphandle function in libcurl 7.17.1 through 7.38.0, when running with the...

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.

Record
GHSA-x89w-3fj3-7gmx
Weakness
CWE-200
Updated
2026-11-02
OSVCURL-CVE-2014-3707 No score

duphandle read out of bounds

libcurl's function curl_easy_duphandle() has a bug that can lead to libcurl eventually sending off sensitive data that was not intended for sending.

When doing an HTTP POST transfer with libcurl, you can use the CURLOPT_COPYPOSTFIELDS option to specify a memory area holding the data to send to the remote server. The memory area's size is set with a separate option, for example CURLOPT_POSTFIELDSIZE.

As the name implies, the data in the specified buffer is copied to a privately held memory buffer that libcurl allocates on the heap. The memory area is associated with the common CURL handle, often referred to as an "easy handle".

This handle can be duplicated by an application to create an identical copy, and all the already set options and data is then also similarly cloned and are be associated with the newly returned handle. This also includes the data to send in an HTTP POST request.

The internal libcurl function that duplicates options from the old handle to the new had two problems:

  1. It mistakenly treated the post data buffer as if it was a C string which is assumed to end with a zero byte. strdup() was subsequently used to duplicate the post data buffer, and as a post data buffer can both legitimately contain a zero byte, or may not contain any zero bytes at all (including a tailing one), strdup() could create a copy that a) was too small b) was too large or c) could crash due to reading an inaccessible memory area. The strdup() function of course allocates memory off the heap.

  2. After duplication of the handle data, the pointer used to read from when sending the data was not updated. When sending off the post, libcurl would still read from the original handle's buffer which at that time could have been freed or reused for other purposes.

When libcurl subsequently constructs the HTTP POST request and includes data for the protocol body it copies data from that pointer using the old size and the old pointer. This makes a read from the wrong place and can lead to libcurl inserting data into the request that happens to be stored at that places in memory at that time.

We are not aware of anyone having been able to actually exploit this for nefarious purposes, but we cannot exclude that it is possible or even might already have been exploited.

Record
CURL-CVE-2014-3707
Updated
2026-11-02
OSV No score

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.

Record
CVE-2014-3707
Updated
2026-11-02
Show 4 moreShow less
OSVDEBIAN-CVE-2014-3707 No score

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.

Record
DEBIAN-CVE-2014-3707
Updated
2026-11-02
OSVMGASA-2014-0444 No score

Updated curl packages fix CVE-2014-3707

Updated curl packages fix security vulnerability:

Symeon Paraschoudis discovered that the curl_easy_duphandle() function in cURL has a bug that can lead to libcurl eventually sending off sensitive data that was not intended for sending, while performing a HTTP POST operation. This bug requires CURLOPT_COPYPOSTFIELDS and curl_easy_duphandle() to be used in that order, and then the duplicate handle must be used to perform the HTTP POST. The curl command line tool is not affected by this problem as it does not use this sequence (CVE-2014-3707).

Record
MGASA-2014-0444
Updated
2026-11-02
OSVUBUNTU-CVE-2014-3707 No score

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.

Record
UBUNTU-CVE-2014-3707
Updated
2026-11-02
OSVUSN-2399-1 No score

curl vulnerability

Symeon Paraschoudis discovered that curl incorrectly handled memory when being used with CURLOPT_COPYPOSTFIELDS and curl_easy_duphandle(). This may result in sensitive data being incorrectly sent to the remote server.

Record
USN-2399-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
curl
Debian:12
before 7.38.0-3
7.38.0-3
curl
Debian:13
before 7.38.0-3
7.38.0-3
curl
Debian:14
before 7.38.0-3
7.38.0-3
curl
Debian:6.0
before 7.21.0-2.1+squeeze10, plus listed versions
7.21.0-17.21.0-27.21.0-2.1+squeeze17.21.0-2.1+squeeze27.21.0-2.1+squeeze3
Show 6 moreShow less
7.21.0-2.1+squeeze47.21.0-2.1+squeeze57.21.0-2.1+squeeze67.21.0-2.1+squeeze77.21.0-2.1+squeeze87.21.0-2.1+squeeze9
7.21.0-2.1+squeeze10
curl
Debian:7
before 7.26.0-1+wheezy11, plus listed versions
7.26.0-1+wheezy107.26.0-1+wheezy27.26.0-1+wheezy37.26.0-1+wheezy47.26.0-1+wheezy5
Show 4 moreShow less
7.26.0-1+wheezy67.26.0-1+wheezy77.26.0-1+wheezy87.26.0-1+wheezy9
7.26.0-1+wheezy11
curl
Mageia:3
before 7.28.1-6.6.mga3
7.28.1-6.6.mga3
curl
Mageia:4
before 7.34.0-1.4.mga4
7.34.0-1.4.mga4
curl-debuginfo
Red Hat:enterprise_linux:6::client
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl-devel
Red Hat:enterprise_linux:6::client
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl
Red Hat:enterprise_linux:6::client
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
Show 30 moreShow less
Affected packages
PackageAffectedFixed
libcurl
Red Hat:enterprise_linux:6::client
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl-debuginfo
Red Hat:enterprise_linux:6::computenode
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl-devel
Red Hat:enterprise_linux:6::computenode
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl
Red Hat:enterprise_linux:6::computenode
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl
Red Hat:enterprise_linux:6::computenode
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl
Red Hat:enterprise_linux:6::server
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl-debuginfo
Red Hat:enterprise_linux:6::server
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl
Red Hat:enterprise_linux:6::server
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl-devel
Red Hat:enterprise_linux:6::server
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl
Red Hat:enterprise_linux:6::workstation
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl-debuginfo
Red Hat:enterprise_linux:6::workstation
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl
Red Hat:enterprise_linux:6::workstation
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
libcurl-devel
Red Hat:enterprise_linux:6::workstation
From an advisory covering 5 CVEs
before 0:7.19.7-46.el6
0:7.19.7-46.el6
curl-debuginfo
Red Hat:enterprise_linux:7::client
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl-devel
Red Hat:enterprise_linux:7::client
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl
Red Hat:enterprise_linux:7::client
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl
Red Hat:enterprise_linux:7::client
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl-debuginfo
Red Hat:enterprise_linux:7::computenode
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl-devel
Red Hat:enterprise_linux:7::computenode
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl
Red Hat:enterprise_linux:7::computenode
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl
Red Hat:enterprise_linux:7::computenode
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl
Red Hat:enterprise_linux:7::server
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl-debuginfo
Red Hat:enterprise_linux:7::server
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl
Red Hat:enterprise_linux:7::server
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl-devel
Red Hat:enterprise_linux:7::server
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl
Red Hat:enterprise_linux:7::workstation
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl-debuginfo
Red Hat:enterprise_linux:7::workstation
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl
Red Hat:enterprise_linux:7::workstation
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
libcurl-devel
Red Hat:enterprise_linux:7::workstation
From an advisory covering 5 CVEs
before 0:7.29.0-25.el7
0:7.29.0-25.el7
curl
Ubuntu:14.04:LTS
before 7.35.0-1ubuntu2.2, plus listed versions
7.32.0-1ubuntu17.33.0-1ubuntu17.34.0-1ubuntu17.35.0-1ubuntu17.35.0-1ubuntu27.35.0-1ubuntu2.1
7.35.0-1ubuntu2.2

History

History
RecordedChangedSources
affected, facts
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2014-3707 is a medium vulnerability (CVSS 4.3) in Haxx Libcurl, published November 5, 2014. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 5.12%, the 92nd percentile. Fixed in curl 7.38.0-3.

References

Show 61 moreShow less
MoveEnter Open