{"id":"CVE-2026-92390","kind":"vulnerability","aliases":["CVE-2026-92390"],"related":[],"title":"curl: remote server can overwrite local files under -J flag","description":"When invoked with `--remote-header-name` (`-J`), curl fails to preserve its\ndocumented anti-clobbering protection if an intermediate 103 Early Hints\nresponse precedes the final HTTP response, or if an `ETag` header is processed\nbefore `Content-Disposition` under `--etag-save`. This flaw allows an HTTP(S)\nserver to overwrite an existing local file specified in the\n`Content-Disposition` header despite the presence of the `-J` non-overwrite\nconstraint.","summary":"When curl runs with --remote-header-name (-J), a server can send a 103 Early Hints response or an ETag header before Content-Disposition to bypass curl's no-overwrite protection. The server can then overwrite an existing local file chosen by the server's Content-Disposition filename.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ci","curl","linux","macos","package","scripts","windows"],"not_affected_if":["explicit-output-filename","no-remote-header-name-flag","trusted-servers-only"],"how_to_check":"- Run `curl --version` and compare against the fixed release in the NVD entry; the sources do not name the affected version range.\n- Search scripts and cron jobs for `curl` invocations that include `-J` or `--remote-header-name` together with `--etag-save`.","fix":"- Upgrade curl to a release that includes the fix; the fixed version is unknown from the sources, check the curl project advisory.\n- Until patched, avoid `-J` when downloading from untrusted servers, or write to a fresh empty directory.","status":"open","published_at":"2026-10-20T21:17:21+00:00","first_seen_at":"2026-10-23T21:57:21+00:00","triaged_at":"2026-10-25T05:04:20+00:00","updated_at":"2026-10-25T05:04:20+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T05:04:20Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade curl to a release that includes the fix; the fixed version is unknown from the sources, check the curl project advisory.\n- Until patched, avoid `-J` when downloading from untrusted servers, or write to a fresh empty directory.","reach":"internet","title":"curl: remote server can overwrite local files under -J flag","impact":"medium","summary":"When curl runs with --remote-header-name (-J), a server can send a 103 Early Hints response or an ETag header before Content-Disposition to bypass curl's no-overwrite protection. The server can then overwrite an existing local file chosen by the server's Content-Disposition filename.","category":"package","nicknames":[],"who_cares":["curl","linux","macos","windows","scripts","ci"],"confidence":0.6,"needs_auth":"no","worst_case":"server overwrites an existing local file on the client machine","analyst_note":"Find the affected and fixed curl versions and the upstream advisory from the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-92390.","how_to_check":"- Run `curl --version` and compare against the fixed release in the NVD entry; the sources do not name the affected version range.\n- Search scripts and cron jobs for `curl` invocations that include `-J` or `--remote-header-name` together with `--etag-save`.","needs_analyst":true,"not_affected_if":["explicit-output-filename","no-remote-header-name-flag","trusted-servers-only"],"who_is_affected":"Teams that run curl with -J (--remote-header-name) to download files from servers they do not fully control, especially when combined with --etag-save. Scripts that download from trusted fixed URLs with explicit output names are not exposed. unknown whether other option combinations are affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000658,"input_tokens":3377,"output_tokens":640,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-92390':13A,16A '103':38B,97C 'allow':123C 'anti':91C 'anti-clobb':90C 'bypass':51B 'chosen':67B 'ci':17B 'clobber':92C 'constraint':150C 'content':48B,73B,115C,138C 'content-disposit':47B,72B,114C,137C 'curl':1A,18B,25B,52B,84C 'cve':11A,14A 'despit':141C 'disposit':49B,74B,116C,139C 'document':89C 'earli':39B,98C 'etag':44B,109C,119C 'etag-sav':118C 'exist':64B,131C 'fail':85C 'file':7A,66B,133C 'filenam':75B 'final':103C 'flag':10A 'flaw':122C 'header':30B,45B,81C,110C,140C 'hint':40B,99C 'http':104C,125C 'intermedi':96C 'invok':77C 'j':9A,32B,83C,146C 'linux':19B 'local':6A,65B,132C 'maco':20B 'name':31B,82C 'no-overwrit':54B 'non':148C 'non-overwrit':147C 'overwrit':5A,56B,62B,129C,149C 'packag':21B 'preced':101C 'presenc':143C 'preserv':87C 'process':112C 'protect':57B,93C 'remot':2A,29B,80C 'remote-header-nam':28B,79C 'respons':41B,100C,105C 'run':26B 'save':120C 'script':22B 'send':36B 'server':3A,34B,59B,70B,127C 'specifi':134C 'window':23B","nicknames":[],"mitigations":[],"who_affected":"Teams that run curl with -J (--remote-header-name) to download files from servers they do not fully control, especially when combined with --etag-save. Scripts that download from trusted fixed URLs with explicit output names are not exposed. unknown whether other option combinations are affected.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T21:17:21+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-92390","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92390","severity":null,"published_at":"2026-10-20T21:17:21+00:00","modified_at":"2026-10-22T17:21:57+00:00","first_seen_at":"2026-10-23T21:57:21+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}