Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPosition on victim network path
-
DeliveryWait for HSTS cache re-import dropping entry
-
ExploitTarget now-unprotected host
-
ExecutionForce HTTPS-to-HTTP downgrade
-
ImpactIntercept or tamper with cleartext traffic
Vulnerability Assessment
| Exploitation Conditions | Requires the application/caller to have curl's HSTS feature explicitly enabled (CURLOPT_HSTS or --hsts) AND to use a persistent HSTS cache file that is exported and re-imported across runs, with at least one longer-lived (e.g. includeSubDomains/child) entry present to be dropped. The defect itself is a parsing/import logic error; actual damage further requires an active on-path network attacker to exploit the resulting loss of HSTS enforcement via a protocol downgrade. Limiting factors: HSTS is off by default in curl, persistence must be configured, and no harm occurs without a separately-positioned MITM attacker - so default and typical curl invocations (no HSTS state) are not affected. |
| Impact | No CVSS vector, EPSS score, KEV listing, or POC is provided in the input - the curl project self-rates this as severity LOW, and no independent exploitation signals are available to contradict or reinforce that. The flaw is a logic error in libcurl's HSTS cache import: when the persisted HSTS store is read back in, a longer-lived entry (described as a 'child', i.e. a subdomain/includeSubDomains-covered host) can be dropped, prematurely shortening or removing HSTS protection for that host. The real-world impact is therefore an indirect weakening of a downgrade defense rather than direct code execution or data theft, and it only matters to the subset of deployments that both enable curl's opt-in HSTS feature (CURLOPT_HSTS / --hsts) and rely on persistent HSTS caching across runs. Realizing any harm additionally requires an on-path/active network attacker to exploit the now-missing HSTS entry via an HTTPS→HTTP downgrade or MITM - a meaningful precondition that lowers practical risk well below what curl's enormous install base might otherwise suggest. Net assessment: low operational priority; patch as part of routine curl 8.23.0 maintenance rather than as an emergency. Signals are consistent (low severity, no exploitation evidence); the main gap is the total absence of a published CVSS vector, so the severity rests on the vendor's own LOW rating. |
| Exploit ScenarioDerived | A long-running application uses libcurl with a persisted HSTS cache and has previously recorded an includeSubDomains/long-lived HSTS entry. After the cache is re-imported, the longer-lived child entry is silently dropped, so curl no longer enforces HTTPS for that host; an attacker positioned on the network then downgrades the next request to cleartext HTTP to intercept or tamper with it. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Persisted HSTS state in curl/libcurl can be silently truncated when a previously exported HSTS cache is re-imported, because the import logic drops a longer-lived child entry (for example an includeSubDomains rule) in favor of a shorter-lived parent. Applications that explicitly enable curl's HSTS support via CURLOPT_HSTS or the --hsts option and persist that cache to disk across runs are affected; default curl usage with HSTS off is not. The resulting loss of HSTS enforcement only becomes exploitable if an on-path (man-in-the-middle) attacker is positioned to force a protocol downgrade to plaintext HTTP, so the curl project rates this severity LOW and no public exploit code or KEV/EPSS signal is present in the available data. Remote attackers, no authentication required per the assessed vector (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N), but attack complexity is high and confidentiality/integrity impact is limited.
RemediationAI
Upgrade to curl 8.23.0, the release in which this and the other twenty-three advisories in the batch are fixed; the curl security page (https://curl.se/docs/security.html) and the oss-security advisory (https://seclists.org/oss-sec/2026/q4/154) link the specific commit for each issue, and commercial long-term-support options are described at https://rock-solid.curl.dev. Because the flaw weakens persisted HSTS state, an interim, concrete workaround is to stop relying on an imported HSTS cache: remove --hsts / CURLOPT_HSTS persistence - or delete and stop re-importing any stored HSTS cache file - so the client cannot be silently downgraded on the basis of a truncated policy set. The trade-off is that cross-run HSTS enforcement is lost entirely, so where HTTPS enforcement matters, move it out of curl: enforce HSTS, TLS-only and redirect-to-HTTPS policy at the TLS terminator, forward proxy, load balancer, or application layer, and disable automatic scheme downgrades in the calling application. Applications that embed libcurl should be rebuilt against 8.23.0 and should audit any code path that writes out and reloads an HSTS cache for defensive completeness. If the caller must keep persistence, treat the reloaded cache as untrusted state: re-verify certificate validity on every connection and do not treat the presence of a cache file as proof of an enforced HSTS policy.
Affected ProductsAI
curl and libcurl are affected, specifically builds where HSTS handling is explicitly enabled and a persistent HSTS cache is exported and re-imported (CURLOPT_HSTS in libcurl, --hsts on the command line). The provided curl vulnerability table lists first-affected and last-affected version ranges for the sibling CVEs published in the same advisory batch, but the exact range for CVE-2026-87862 is not included in the supplied excerpt; the authoritative range should be read from the curl security page at https://curl.se/docs/security.html (and the advisory thread at https://seclists.org/oss-sec/2026/q4/154, with commercial support information at https://rock-solid.curl.dev). No CPE strings were supplied with the intel, so downstream inventory must be matched on installed libcurl/curl version rather than on a vendor-supplied CPE. All twenty-four issues in the batch, including this one, are fixed in curl 8.23.0, and the advisory states that each fix is accompanied by a link to the corresponding upstream commit.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
curl and its embedded library libcurl implement the client side of HTTP Strict Transport Security (HSTS), storing policy entries (host, expiry, includeSubDomains flag) in an in-memory cache that callers can export and re-import across process runs through CURLOPT_HSTS and the command-line option --hsts. The defect here is in the cache import/merge logic: when an exported file is read back, an entry with a longer remaining lifetime that applies to a child host can be discarded in favor of a shorter-lived parent entry, effectively pruning the stronger policy. No CWE identifier is supplied in the source data, but the underlying class is a state-management/parsing logic error (improper preservation of security-relevant cached state) rather than memory corruption. Because HSTS is disabled by default and persistence must be explicitly configured, exposure requires a caller that both enables the feature and reuses a persisted cache; the security consequence materializes only when a network attacker is already positioned to intercept traffic and the dropped entry was the only control preventing a downgrade to plaintext HTTP. This is one of twenty-four issues fixed in curl 8.23.0, of which only CVE-2026-92392 (HTTP/2 upload use-after-free) is rated HIGH per the project; this one is rated LOW. Given curl's roughly twenty billion installations across devices, routers, printers and applications, the aggregate downstream surface is large, but the practical impact is bounded by the opt-in feature and the on-path attacker prerequisite.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AC:H because exploitation needs a specific dropped-entry cache state plus an on-path attacker; PR:N/UI:N as no auth or victim action is needed; C:L/I:L reflect downgrade-enabled interception, not full compromise.
Estimated by vuln.today — no official severity rating has been published for this CVE yet.
Description PRE-NVD
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
CVE.org
GitHub PoC
Exploit-DB