Public-key pinning bypass in curl built with wolfSSL
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Spoofing
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CISA ADP. Fix status from CNA and Red Hat. Impact type from CWE-295.
Summary
curl built with wolfSSL in the listed versions from 7.43.0 through 8.22.0 is affected. After wolfSSL validates the TLS handshake, curl re-parses the same certificate (CWE-295), and a manipulated validity length field makes it match a different embedded key against the pinned public key hash. A remote, unauthenticated attacker can therefore pass public-key pinning for a key the TLS peer does not possess.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Description from the CNA
When built with wolfSSL, curl can successfully validate a pinned public key hash against a key the TLS peer does not possess. During the TLS handshake, wolfSSL validates the connection, but curl's subsequent re-parsing of the same certificate - tricked by a manipulated validity length field - extracts and matches a different embedded key, incorrectly authorizing the pinned public key.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- Yes
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| curl | curl | 8.22.0 – 8.22.0; 8.21.0 – 8.21.0; 8.20.0 – 8.20.0; 8.19.0 – 8.19.0; 8.18.0 – 8.18.0; 8.17.0 – 8.17.0; 8.16.0 – 8.16.0; 8.15.0 – 8.15.0; 8.14.1 – 8.14.1; 8.14.0 – 8.14.0; 8.13.0 – 8.13.0; 8.12.1 – 8.12.1; 8.12.0 – 8.12.0; 8.11.1 – 8.11.1; 8.11.0 – 8.11.0; 8.10.1 – 8.10.1; 8.10.0 – 8.10.0; 8.9.1 – 8.9.1; 8.9.0 – 8.9.0; 8.8.0 – 8.8.0; 8.7.1 – 8.7.1; 8.7.0 – 8.7.0; 8.6.0 – 8.6.0; 8.5.0 – 8.5.0; 8.4.0 – 8.4.0; 8.3.0 – 8.3.0; 8.2.1 – 8.2.1; 8.2.0 – 8.2.0; 8.1.2 – 8.1.2; 8.1.1 – 8.1.1; 8.1.0 – 8.1.0; 8.0.1 – 8.0.1; 8.0.0 – 8.0.0; 7.88.1 – 7.88.1; 7.88.0 – 7.88.0; 7.87.0 – 7.87.0; 7.86.0 – 7.86.0; 7.85.0 – 7.85.0; 7.84.0 – 7.84.0; 7.83.1 – 7.83.1; 7.83.0 – 7.83.0; 7.82.0 – 7.82.0; 7.81.0 – 7.81.0; 7.80.0 – 7.80.0; 7.79.1 – 7.79.1; 7.79.0 – 7.79.0; 7.78.0 – 7.78.0; 7.77.0 – 7.77.0; 7.76.1 – 7.76.1; 7.76.0 – 7.76.0; 7.75.0 – 7.75.0; 7.74.0 – 7.74.0; 7.73.0 – 7.73.0; 7.72.0 – 7.72.0; 7.71.1 – 7.71.1; 7.71.0 – 7.71.0; 7.70.0 – 7.70.0; 7.69.1 – 7.69.1; 7.69.0 – 7.69.0; 7.68.0 – 7.68.0; 7.67.0 – 7.67.0; 7.66.0 – 7.66.0; 7.65.3 – 7.65.3; 7.65.2 – 7.65.2; 7.65.1 – 7.65.1; 7.65.0 – 7.65.0; 7.64.1 – 7.64.1; 7.64.0 – 7.64.0; 7.63.0 – 7.63.0; 7.62.0 – 7.62.0; 7.61.1 – 7.61.1; 7.61.0 – 7.61.0; 7.60.0 – 7.60.0; 7.59.0 – 7.59.0; 7.58.0 – 7.58.0; 7.57.0 – 7.57.0; 7.56.1 – 7.56.1; 7.56.0 – 7.56.0; 7.55.1 – 7.55.1; 7.55.0 – 7.55.0; 7.54.1 – 7.54.1; 7.54.0 – 7.54.0; 7.53.1 – 7.53.1; 7.53.0 – 7.53.0; 7.52.1 – 7.52.1; 7.52.0 – 7.52.0; 7.51.0 – 7.51.0; 7.50.3 – 7.50.3; 7.50.2 – 7.50.2; 7.50.1 – 7.50.1; 7.50.0 – 7.50.0; 7.49.1 – 7.49.1; 7.49.0 – 7.49.0; 7.48.0 – 7.48.0; 7.47.1 – 7.47.1; 7.47.0 – 7.47.0; 7.46.0 – 7.46.0; 7.45.0 – 7.45.0; 7.44.0 – 7.44.0; 7.43.0 – 7.43.0 | — | No fix listed | CNA |
- curl Vendorcurl Affected 8.22.0 – 8.22.0; 8.21.0 – 8.21.0; 8.20.0 – 8.20.0; 8.19.0 – 8.19.0; 8.18.0 – 8.18.0; 8.17.0 – 8.17.0; 8.16.0 – 8.16.0; 8.15.0 – 8.15.0; 8.14.1 – 8.14.1; 8.14.0 – 8.14.0; 8.13.0 – 8.13.0; 8.12.1 – 8.12.1; 8.12.0 – 8.12.0; 8.11.1 – 8.11.1; 8.11.0 – 8.11.0; 8.10.1 – 8.10.1; 8.10.0 – 8.10.0; 8.9.1 – 8.9.1; 8.9.0 – 8.9.0; 8.8.0 – 8.8.0; 8.7.1 – 8.7.1; 8.7.0 – 8.7.0; 8.6.0 – 8.6.0; 8.5.0 – 8.5.0; 8.4.0 – 8.4.0; 8.3.0 – 8.3.0; 8.2.1 – 8.2.1; 8.2.0 – 8.2.0; 8.1.2 – 8.1.2; 8.1.1 – 8.1.1; 8.1.0 – 8.1.0; 8.0.1 – 8.0.1; 8.0.0 – 8.0.0; 7.88.1 – 7.88.1; 7.88.0 – 7.88.0; 7.87.0 – 7.87.0; 7.86.0 – 7.86.0; 7.85.0 – 7.85.0; 7.84.0 – 7.84.0; 7.83.1 – 7.83.1; 7.83.0 – 7.83.0; 7.82.0 – 7.82.0; 7.81.0 – 7.81.0; 7.80.0 – 7.80.0; 7.79.1 – 7.79.1; 7.79.0 – 7.79.0; 7.78.0 – 7.78.0; 7.77.0 – 7.77.0; 7.76.1 – 7.76.1; 7.76.0 – 7.76.0; 7.75.0 – 7.75.0; 7.74.0 – 7.74.0; 7.73.0 – 7.73.0; 7.72.0 – 7.72.0; 7.71.1 – 7.71.1; 7.71.0 – 7.71.0; 7.70.0 – 7.70.0; 7.69.1 – 7.69.1; 7.69.0 – 7.69.0; 7.68.0 – 7.68.0; 7.67.0 – 7.67.0; 7.66.0 – 7.66.0; 7.65.3 – 7.65.3; 7.65.2 – 7.65.2; 7.65.1 – 7.65.1; 7.65.0 – 7.65.0; 7.64.1 – 7.64.1; 7.64.0 – 7.64.0; 7.63.0 – 7.63.0; 7.62.0 – 7.62.0; 7.61.1 – 7.61.1; 7.61.0 – 7.61.0; 7.60.0 – 7.60.0; 7.59.0 – 7.59.0; 7.58.0 – 7.58.0; 7.57.0 – 7.57.0; 7.56.1 – 7.56.1; 7.56.0 – 7.56.0; 7.55.1 – 7.55.1; 7.55.0 – 7.55.0; 7.54.1 – 7.54.1; 7.54.0 – 7.54.0; 7.53.1 – 7.53.1; 7.53.0 – 7.53.0; 7.52.1 – 7.52.1; 7.52.0 – 7.52.0; 7.51.0 – 7.51.0; 7.50.3 – 7.50.3; 7.50.2 – 7.50.2; 7.50.1 – 7.50.1; 7.50.0 – 7.50.0; 7.49.1 – 7.49.1; 7.49.0 – 7.49.0; 7.48.0 – 7.48.0; 7.47.1 – 7.47.1; 7.47.0 – 7.47.0; 7.46.0 – 7.46.0; 7.45.0 – 7.45.0; 7.44.0 – 7.44.0; 7.43.0 – 7.43.0 Fixed in — No fix listed CNA
Remediation
The sources list no fixed version for curl. Red Hat advisory RHSA-2026:82895 covers Red Hat Hardened Images.
Written with Claude Haiku 5.5 from the sources below · 2026-10-29
Red Hat 1 advisory
- RHSA-2026:82895 Released 2026-10-14 · Red Hat rating ImportantRed Hat Hardened Images RPMs bug fix and enhancement update
- Red Hat Hardened Images curl-8.23.0-0.1.hum1@aarch64, curl-8.23.0-0.1.hum1@s390x, curl-8.23.0-0.1.hum1@src +10
Vendor assessments
Red Hat
Red Hat rating: Low. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Hardened Images | Fixed | RHSA-2026:82895 |
Not affected: 8 products
- Red Hat Enterprise Linux 10
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
- Red Hat Hardened Images
- Red Hat JBoss Core Services
- Red Hat Satellite 6
Timeline
- 2026-10-21 Threatist record created from CVE-2026-87866
- 2026-10-21 Alias added: GHSA-wq9f-qmpx-2cc8
- 2026-10-23 Affected versions changed · Red Hat
- 2026-10-29 CVSS score added · CISA ADP
- 2026-10-29 Weakness changed · CISA ADP
- 2026-10-29 CISA SSVC decision points changed
- 2026-10-29 Priority changed: LOW → HIGH
More curl vulnerabilities
- TI-2023-19922 Out-of-bounds write in curl CVSS 3.1CRITICAL 9.8
- TI-2026-16162 Negotiate ambient user conn reuse CVSS 3.1CRITICAL 9.8
- TI-2026-10231 cross-origin Digest auth state leak CVSS 3.1CRITICAL 9.8
- TI-2026-09063 HTTP/2 stream-dependency tree UAF CVSS 3.1CRITICAL 9.8
- TI-2026-07976 stale proxy password leak CVSS 3.1CRITICAL 9.8
- TI-2026-07845 SASL double-free CVSS 3.1CRITICAL 9.8
Sources
- CVE-2026-87866 · CVE Program
- CVE-2026-87866 · NVD
- FIRST EPSS
- GHSA-wq9f-qmpx-2cc8 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-87866 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences