CVE-2016-8625
IDNA 2003 makes curl use wrong host
Project curl Security Advisory, November 2, 2016 - Permalink
VULNERABILITY
When curl is built with libidn to handle International Domain Names (IDNA), it translates them to puny code for DNS resolving using the IDNA 2003 standard, while IDNA 2008 is the modern and up-to-date IDNA standard.
This misalignment causes problems with for example domains using the
German ß character (known as the Unicode Character
LATIN SMALL LETTER SHARP S
) which is used at times in the
.de
TLD and is translated differently in the two IDNA
standards, leading to users potentially and unknowingly issuing network
transfer requests to the wrong host.
For example, straße.de
is translated into
strasse.de
using IDNA 2003 but is translated into
xn--strae-oqa.de
using IDNA 2008. Needless to say, those
hostnames could very well resolve to different addresses and be two
completely independent servers. IDNA 2008 is mandatory for
.de
domains.
curl is not alone with this problem, as there is currently a big flux in the world of network user-agents about which IDNA version to support and use.
This name problem exists for DNS-using protocols in curl, but only when built to use libidn.
INFO
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2016-8625 to this issue.
CWE-838: Inappropriate Encoding for Output Context
Severity: High
AFFECTED VERSIONS
This flaw exists in the following curl versions.
- Affected versions: curl 7.12.0 to and including 7.50.3
- Not affected versions: curl < 7.12.0 and curl >= 7.51.0
- Introduced-in: https://github.com/curl/curl/commit/9631fa740
libcurl is used by many applications, but not always advertised as such!
SOLUTION
In version 7.51.0, the parser function is fixed.
RECOMMENDATIONS
We suggest you take one of the following actions immediately, in order of preference:
A - Upgrade curl and libcurl to version 7.51.0
B - Apply the patch to your version and rebuild
TIMELINE
It was first reported to the curl project on October 11.
We contacted distros@openwall on October 19.
curl 7.51.0 was released on November 2 2016, coordinated with the publication of this advisory.
CREDITS
- Reported-by: Christian Heimes
- Patched-by: Daniel Stenberg
Thanks a lot!