---
id: CVE-2026-9545
title: |-
  In this scenario, libcurl first uses a proper HTTP/3 server for the initial
  transfers, and when it makes a second transfer to the same site it has been
  replaced by the attacker's impostor machine - without a valid certificate.

  When libc…
summary: |-
  In this scenario, libcurl first uses a proper HTTP/3 server for the initial
  transfers, and when it makes a second transfer to the same site it has been
  replaced by the attacker's impostor machine - without a valid certificate.

  When libc…
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'
cwe:
  - CWE-200
  - CWE-295
vendor: haxx
product: curl
affected:
  - 'curl >= 8.11.0, < 8.21.0'
patched:
  - curl 8.21.0
published: '2026-07-03'
updated: '2026-09-15'
sourceUpdated: '2026-09-15T07:16:34.947'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-9545'
references:
  - url: 'https://curl.se/docs/CVE-2026-9545.html'
    label: 2499f714-1537-4658-8207-48ae4bb9eae9
  - url: 'https://curl.se/docs/CVE-2026-9545.json'
    label: 2499f714-1537-4658-8207-48ae4bb9eae9
  - url: 'https://hackerone.com/reports/3752888'
    label: 2499f714-1537-4658-8207-48ae4bb9eae9
  - url: 'https://hackerone.com/reports/3752888'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-9545.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-9545'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2496756'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-9545'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-9545'
  - url: 'https://access.redhat.com/errata/RHSA-2026:41240'
tags:
  - nvd
  - cve.org
  - exploit-available
  - csaf
  - vex
  - red-hat
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-07-06T16:52:42.898546Z'
epss: 0.00268
epssPercentile: 0.19224
ingestedAt: '2026-07-04T06:55:48.803Z'
---

## Overview

In this scenario, libcurl first uses a proper HTTP/3 server for the initial
transfers, and when it makes a second transfer to the same site it has been
replaced by the attacker's impostor machine - without a valid certificate.

When libcurl returns to the hostname the second time with a cached SSL session
(`CURLOPT_SSL_SESSIONID_CACHE` is not disabled) and early data enabled (the
`CURLSSLOPT_EARLYDATA` bit is set in `CURLOPT_SSL_OPTIONS`), libcurl might
send off the second request's bytes on that new connection *before* enforcing
the certificate verification failure. Potentially leaking sensitive
information.

## Affected

- `curl >= 8.11.0, < 8.21.0`

## Remediation

Upgrade past the affected range:

- `curl 8.21.0`

## Vendor advisories

- **RHSA-2026:41240** · Red Hat · fixed in: Red Hat Hardened Images · released 2026-07-17 · [advisory](https://access.redhat.com/errata/RHSA-2026:41240)
- **Red Hat VEX** · Moderate · affected: Confidential Compute Attestation, Red Hat Enterprise Linux AI (RHEL AI) 3, Red Hat OpenShift Container Platform 4, Red Hat OpenShift Dev Spaces, Red Hat Trusted Profile Analyzer · updated 2026-09-18 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-9545.json)
