When libcurl sends a request to a server via an HTTP proxy, it copies the entire URL into the request and sends if off.
If the given URL contains line feeds and carriage returns those are sent along to the proxy too, which allows the program to for example send a separate HTTP request injected embedded in the URL.
Many programs allow some kind of external sources to set the URL or provide partial pieces for the URL to ask for, and if the URL as received from the user is not stripped good enough this flaw allows malicious users to do additional requests in a way that was not intended, or just to insert request headers into the request that the program did not intend.
{ "CWE": { "id": "CWE-444", "desc": "Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling')" }, "package": "curl", "URL": "https://curl.se/docs/CVE-2014-8150.json", "severity": "High", "www": "https://curl.se/docs/CVE-2014-8150.html", "last_affected": "7.39.0" }