Bug 2550702 (CVE-2026-92390)

Summary: CVE-2026-92390 curl: curl: -J no-clobber guarantee bypassed with 103 early hints
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: anthomas, csutherl, ehelms, ggainey, jclere, jpasqual, juwatts, mdellweg, mhulan, nmoumoul, osousa, pcreech, pjindal, plodge, rchan, rekumar, rhel-process-autobot, security-response-team, smallamp, szappis, tmalecek, vchlup, vvoronko, watson-tool-maintainers
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in curl. When the command-line tool is executed with the remote header name option to prevent overwriting existing files, a malicious server can bypass this protection by returning an intermediate HTTP 103 (Early Hints) response or through specific header ordering. This flaw allows an attacker controlling a remote server to overwrite existing local files on the client system.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Deadline: 2026-10-14   

Description OSIDB Bzimport 2026-10-13 17:23:05 UTC
-J no-clobber guarantee bypassed with 103 early hints
=====================================================

Project curl Security Advisory, October 14 2026
[Permalink](https://curl.se/docs/CVE-2026-92390.html)

VULNERABILITY
-------------

When invoked with `--remote-header-name` (`-J`), curl fails to preserve its
documented anti-clobbering protection if an intermediate 103 Early Hints
response precedes the final HTTP response, or if an `ETag` header is processed
before `Content-Disposition` under `--etag-save`. This flaw allows an HTTP(S)
server to overwrite an existing local file specified in the
`Content-Disposition` header despite the presence of the `-J` non-overwrite
constraint.

INFO
----

This problem is similar, but not identical, to the previous vulnerability
[CVE-2020-8177](https://curl.se/docs/CVE-2020-8177.html)

The Common Vulnerabilities and Exposures (CVE) project has assigned the name
CVE-2026-92390 to this issue.

CWE-73: External Control of File Name or Path

Severity: Low

This bug is not considered a *C mistake* (likely to have been avoided had we
not been using C).

AFFECTED VERSIONS
-----------------

- Affected versions: curl 7.20.0 to and including 8.22.0
- Not affected versions: curl < 7.20.0 and >= 8.23.0
- Introduced-in: https://github.com/curl/curl/commit/80675818e0417b

curl is used by many applications, but not always advertised as such!

This flaw only affects the curl command line tool, not libcurl.

SOLUTION
--------

- Fixed-in: https://github.com/curl/curl/commit/c24a69d8cd368de4e25e35

RECOMMENDATIONS
---------------

 A - Upgrade curl to version 8.23.0

 B - Apply the patch to your local version

 C - Avoid using the `-J` option

TIMELINE
--------

This issue was reported to the curl project on September 12, 2026.

curl 8.23.0 was released on October 14, 2026, coordinated with the publication
of this advisory.

CREDITS
-------

- Reported-by: Joshua Rogers (Aisle Research)
- Patched-by: Joshua Rogers (Aisle Research)

Thanks a lot!