Cloudanix VulnDB

CVE-2024-9681

None

CVSS

—

EPSS

2.0%

Published

Nov 6, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in curl can cause secure connection settings meant for one website to be wrongly applied to its parent site, leading to failed connections or less secure access.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Other
Component
Library
Class
Other
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability allows a subdomain's HSTS expiry time to overwrite the parent domain's cache entry in curl's HSTS cache, resulting in incorrect expiration times for HTTPS enforcement on the parent domain.

Why it matters to the business

Organizations relying on curl for secure HTTP transfers may face connection failures or unintended use of insecure HTTP when HSTS is enabled, potentially disrupting operations or exposing traffic.

How an attack unfolds

An attacker controlling a subdomain responds with a Strict-Transport-Security header that causes its expiry to bleed into the parent domain's cache entry, altering the intended HSTS behavior for the parent domain on subsequent accesses.

How to fix it

Upgrade curl to the version containing commit b1ef0e1a01c0bb6ee5367bd9c186a603bde3615a or later.

How to confirm the fix worked

Verify the installed curl version includes the fix commit or test HSTS cache behavior with subdomains and parent domains to confirm correct expiry isolation.

Typical attack path

  1. Control a subdomain of a target domain
  2. Serve HSTS header with crafted max-age from subdomain
  3. Trigger cache overwrite for parent domain entry
  4. Cause parent domain to enforce incorrect HTTPS timeout leading to failures or downgrade

How to detect it

Review curl debug logs or HSTS cache files for unexpected expiry timestamps on parent domains after subdomain accesses; no widespread exploitation indicators exist given the low EPSS and non-KEV status.

What your security team should do

  • Update curl to the fixed version as soon as possible
  • Audit all applications and scripts using curl with HSTS enabled
  • Test HSTS cache behavior in staging environments before deployment

The record

When curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain's cache entry, making it end sooner or later than otherwise intended. This affects curl using applications that enable HSTS and use URLs with the insecure `HTTP://` scheme and perform transfers with hosts like `x.example.com` as well as `example.com` where the first host is a subdomain of the second host. (The HSTS cache either needs to have been populated manually or there needs to have been previous HTTPS accesses done as the cache needs to have entries for the domains involved to trigger this problem.) When `x.example.com` responds with `Strict-Transport-Security:` headers, this bug can make the subdomain's expiry timeout *bleed over* and get set for the parent domain `example.com` in curl's HSTS cache. The result of a triggered bug is that HTTP accesses to `example.com` get converted to HTTPS for a different period of time than what was asked for by the origin server. If `example.com` for example stops supporting HTTPS at its expiry time, curl might then fail to access `http://example.com` until the (wrongly set) timeout expires. This bug can also expire the parent's entry *earlier*, thus making curl inadvertently switch back to insecure HTTP earlier than otherwise intended.

Affected packages

Ecosystem Package Introduced Fixed
Alpine:v3.18 curl 0 8.11.0-r0
Alpine:v3.19 curl 0 8.11.0-r0
Alpine:v3.20 curl 0 8.11.0-r0
Alpine:v3.21 curl 0 8.11.0-r0
Alpine:v3.22 curl 0 8.11.0-r0
Chainguard curl 0 8.11.0-r0
Chainguard curl-dev 0 8.11.0-r0
Chainguard curl-doc 0 8.11.0-r0
Chainguard curl-oci-entrypoint 0 8.11.0-r0
Chainguard curl-static 0 8.11.0-r0
Chainguard libcurl-openssl4 0 8.11.0-r0
Chainguard libcurl4 0 8.11.0-r0
Debian:11 curl 0 No fix
Debian:12 curl 0 No fix
Debian:13 curl 0 No fix
Mageia:9 curl 0 7.88.1-4.4.mga9
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Installer Updates 15 SP4 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Installer Updates 15 SP5 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Micro 5.3 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Micro 5.4 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Micro 5.5 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 curl 0 8.6.0-150600.4.12.1
SUSE:Linux Enterprise Server 12 SP5-LTSS curl 0 8.0.1-11.98.1
SUSE:Linux Enterprise Server 15 SP4-LTSS curl 0 8.0.1-150400.5.56.1
SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5 curl 0 8.0.1-11.98.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 curl 0 8.0.1-150400.5.56.1
SUSE:Manager Proxy 4.3 curl 0 8.0.1-150400.5.56.1
SUSE:Manager Server 4.3 curl 0 8.0.1-150400.5.56.1
Ubuntu:20.04:LTS curl 0 7.68.0-1ubuntu2.24
Ubuntu:22.04:LTS curl 0 7.81.0-1ubuntu1.19
Ubuntu:24.04:LTS curl 0 8.5.0-2ubuntu10.5
Ubuntu:24.10 curl 0 8.9.1-2ubuntu2.1
Wolfi curl 0 8.11.0-r0
Wolfi curl-dev 0 8.11.0-r0
Wolfi curl-doc 0 8.11.0-r0
Wolfi curl-oci-entrypoint 0 8.11.0-r0
Wolfi curl-static 0 8.11.0-r0
Wolfi libcurl-openssl4 0 8.11.0-r0
Wolfi libcurl4 0 8.11.0-r0
openSUSE:Leap 15.5 curl 0 8.0.1-150400.5.56.1
openSUSE:Leap 15.6 curl 0 8.6.0-150600.4.12.1
openSUSE:Leap Micro 5.5 curl 0 8.0.1-150400.5.56.1
openSUSE:Tumbleweed curl 0 8.11.0-1.1

Related vulnerabilities