{"id":"CVE-2024-9681","aliases":["ALPINE-CVE-2024-9681","AZL-52335","AZL-52347","AZL-52402","AZL-52405","AZL-52414","AZL-52426","AZL-52444","AZL-52449","BELL-CVE-2024-9681","CLSA-2025-1764773365","CLSA-2026-1767628458","CURL-CVE-2024-9681","DEBIAN-CVE-2024-9681","EUVD-2024-50377","GHSA-g337-g667-mjvw","JLSEC-2026-419","MGASA-2024-0360","OESA-2024-2388","OESA-2024-2389","OESA-2024-2472","OESA-2024-2473","ROOT-OS-DEBIAN-11-CVE-2024-9681","SUSE-SU-2024:3925-1","SUSE-SU-2024:3926-1","SUSE-SU-2024:3927-1","SUSE-SU-2024:3927-2","SUSE-SU-2025:20083-1","SUSE-SU-2025:20239-1","UBUNTU-CVE-2024-9681","USN-7104-1","openSUSE-SU-2024:14476-1"],"status":"published","title":"HSTS subdomain overwrites parent cache entry","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.01987,"percentile":0.80758,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-697"],"published":"2024-11-06T00:00:00Z","modified":"2026-11-05T05:40:51Z","fixes":[{"ecosystem":"Alpine:v3.18","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.19","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.20","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.21","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.22","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.23","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.24","package":"curl","fixed_in":["8.11.0-r0"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"curl","fixed_in":["8.8.0-5"],"sources":["osv"]},{"ecosystem":"Azure Linux:3","package":"curl","fixed_in":["8.8.0-4"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"cmake","fixed_in":["3.21.4-16"],"sources":["osv"]},{"ecosystem":"Azure Linux:3","package":"cmake","fixed_in":["3.30.3-4"],"sources":["osv"]},{"ecosystem":"Azure Linux:3","package":"mysql","fixed_in":["8.0.40-5"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"mysql","fixed_in":["8.0.40-3"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"rust","fixed_in":["1.72.0-10"],"sources":["osv"]},{"ecosystem":"Azure Linux:3","package":"tensorflow","fixed_in":["2.16.1-7"],"sources":["osv"]},{"ecosystem":"Alpaquita:23","package":"curl","fixed_in":["8.9.1-r1"],"sources":["osv"]},{"ecosystem":"Alpaquita:stream","package":"curl","fixed_in":["8.11.0-r1"],"sources":["osv"]},{"ecosystem":"BellSoft Hardened Containers:stream","package":"curl","fixed_in":["8.11.0-r1"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.2","package":"curl","fixed_in":["7.76.1-23.el9_2.4.tuxcare.els5"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.2","package":"curl-minimal","fixed_in":["7.76.1-23.el9_2.4.tuxcare.els5"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl","fixed_in":["7.76.1-23.el9_2.4.tuxcare.els5"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl-devel","fixed_in":["7.76.1-23.el9_2.4.tuxcare.els5"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl-minimal","fixed_in":["7.76.1-23.el9_2.4.tuxcare.els5"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.6","package":"curl","fixed_in":["7.76.1-31.el9_6.1.tuxcare.els2"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.6","package":"curl-minimal","fixed_in":["7.76.1-31.el9_6.1.tuxcare.els2"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl","fixed_in":["7.76.1-31.el9_6.1.tuxcare.els2"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl-devel","fixed_in":["7.76.1-31.el9_6.1.tuxcare.els2"],"sources":["osv"]},{"ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl-minimal","fixed_in":["7.76.1-31.el9_6.1.tuxcare.els2"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"curl","fixed_in":["7.88.1-10+deb12u9"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"curl","fixed_in":["8.11.0-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"curl","fixed_in":["8.11.0-1"],"sources":["osv"]},{"ecosystem":"Julia","package":"CURL_jll","fixed_in":["8.11.0+0"],"sources":["osv"]},{"ecosystem":"Julia","package":"LibCURL_jll","fixed_in":["8.11.0+0"],"sources":["osv"]},{"ecosystem":"Mageia:9","package":"curl","fixed_in":["7.88.1-4.4.mga9"],"sources":["osv"]},{"ecosystem":"openEuler:22.03-LTS-SP1","package":"curl","fixed_in":["7.79.1-33.oe2203sp1"],"sources":["osv"]},{"ecosystem":"openEuler:24.03-LTS","package":"curl","fixed_in":["8.4.0-11.oe2403"],"sources":["osv"]},{"ecosystem":"openEuler:22.03-LTS-SP4","package":"curl","fixed_in":["7.79.1-33.oe2203sp4"],"sources":["osv"]},{"ecosystem":"openEuler:22.03-LTS-SP3","package":"curl","fixed_in":["7.79.1-33.oe2203sp3"],"sources":["osv"]},{"ecosystem":"Root:Debian:11","package":"curl","fixed_in":["7.74.0-1.3+deb11u16.root.io.13","7.74.0-1.3+deb11u16.aikido.18","7.74.0-1.3+deb11u16.aikido.19","7.74.0-1.3+deb11u16.root.io.17","7.74.0-1.3+deb11u16.root.io.15","7.74.0-1.3+deb11u16.root.io.16","7.74.0-1.3+deb11u16.root.io.14"],"sources":["osv"]},{"ecosystem":"Root:Debian:11","package":"rootio-curl","fixed_in":["7.74.0-1.3+deb11u16.root.io.13","7.74.0-1.3+deb11u16.aikido.18","7.74.0-1.3+deb11u16.aikido.19","7.74.0-1.3+deb11u16.root.io.17","7.74.0-1.3+deb11u16.root.io.15","7.74.0-1.3+deb11u16.root.io.16","7.74.0-1.3+deb11u16.root.io.14"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Module for Basesystem 15 SP6","package":"curl","fixed_in":["8.6.0-150600.4.12.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.6","package":"curl","fixed_in":["8.6.0-150600.4.12.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Installer Updates 15 SP4","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Installer Updates 15 SP5","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Micro 5.3","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Micro 5.4","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Micro 5.5","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Module for Basesystem 15 SP5","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server 15 SP4-LTSS","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP4","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Manager Proxy 4.3","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Manager Server 4.3","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap Micro 5.5","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.5","package":"curl","fixed_in":["8.0.1-150400.5.56.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server 12 SP5-LTSS","package":"curl","fixed_in":["8.0.1-11.98.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5","package":"curl","fixed_in":["8.0.1-11.98.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Micro 6.0","package":"curl","fixed_in":["8.6.0-4.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"curl","fixed_in":["7.81.0-1ubuntu1.19"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"curl","fixed_in":["8.5.0-2ubuntu10.5"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"curl","fixed_in":["8.11.0-1.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Alpine:v3.18","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.19","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.20","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.21","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.22","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.23","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.24","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.74.0"},{"fixed":"8.11.0-r0"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.8.0-5"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.8.0-4"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"cmake","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.21.4-16"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"cmake","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.30.3-4"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"mysql","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.40-5"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"mysql","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.40-3"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"rust","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.72.0-10"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.16.1-7"}]}]},{"source":"osv","ecosystem":"Alpaquita:23","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.9.1-r0"},{"fixed":"8.9.1-r1"}]}]},{"source":"osv","ecosystem":"Alpaquita:stream","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.10.1-r0"},{"fixed":"8.11.0-r1"}]}]},{"source":"osv","ecosystem":"BellSoft Hardened Containers:stream","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.10.1-r0"},{"fixed":"8.11.0-r1"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.2","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-23.el9_2.4.tuxcare.els5"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.2","package":"curl-minimal","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-23.el9_2.4.tuxcare.els5"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-23.el9_2.4.tuxcare.els5"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl-devel","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-23.el9_2.4.tuxcare.els5"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.2","package":"libcurl-minimal","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-23.el9_2.4.tuxcare.els5"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.6","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-31.el9_6.1.tuxcare.els2"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.6","package":"curl-minimal","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-31.el9_6.1.tuxcare.els2"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-31.el9_6.1.tuxcare.els2"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl-devel","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-31.el9_6.1.tuxcare.els2"}]}]},{"source":"osv","ecosystem":"TuxCare:AlmaLinux:9.6","package":"libcurl-minimal","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.76.1-31.el9_6.1.tuxcare.els2"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.88.1-10+deb12u9"}]}],"versions":["7.88.1-10","7.88.1-10+deb12u1","7.88.1-10+deb12u1~bpo11+1","7.88.1-10+deb12u2","7.88.1-10+deb12u3","7.88.1-10+deb12u3~bpo11+1","7.88.1-10+deb12u4","7.88.1-10+deb12u5","7.88.1-10+deb12u5~bpo11+1","7.88.1-10+deb12u6","7.88.1-10+deb12u6~bpo11+1","7.88.1-10+deb12u7","7.88.1-10+deb12u8"]},{"source":"osv","ecosystem":"Debian:13","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.11.0-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.11.0-1"}]}]},{"source":"osv","ecosystem":"Julia","package":"CURL_jll","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"8.11.0+0"}]}]},{"source":"osv","ecosystem":"Julia","package":"LibCURL_jll","ranges":[{"type":"SEMVER","events":[{"introduced":"7.81.0+0"},{"fixed":"8.11.0+0"}]}]},{"source":"osv","ecosystem":"Mageia:9","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.88.1-4.4.mga9"}]}]},{"source":"osv","ecosystem":"openEuler:22.03-LTS-SP1","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.79.1-33.oe2203sp1"}]}]},{"source":"osv","ecosystem":"openEuler:24.03-LTS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.4.0-11.oe2403"}]}]},{"source":"osv","ecosystem":"openEuler:22.03-LTS-SP4","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.79.1-33.oe2203sp4"}]}]},{"source":"osv","ecosystem":"openEuler:22.03-LTS-SP3","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.79.1-33.oe2203sp3"}]}]},{"source":"osv","ecosystem":"Root:Debian:11","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.74.0-1.3+deb11u16.root.io.13"},{"fixed":"7.74.0-1.3+deb11u16.aikido.18"},{"fixed":"7.74.0-1.3+deb11u16.aikido.19"},{"fixed":"7.74.0-1.3+deb11u16.root.io.17"},{"fixed":"7.74.0-1.3+deb11u16.root.io.15"},{"fixed":"7.74.0-1.3+deb11u16.root.io.16"},{"fixed":"7.74.0-1.3+deb11u16.root.io.14"}]}]},{"source":"osv","ecosystem":"Root:Debian:11","package":"rootio-curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.74.0-1.3+deb11u16.root.io.13"},{"fixed":"7.74.0-1.3+deb11u16.aikido.18"},{"fixed":"7.74.0-1.3+deb11u16.aikido.19"},{"fixed":"7.74.0-1.3+deb11u16.root.io.17"},{"fixed":"7.74.0-1.3+deb11u16.root.io.15"},{"fixed":"7.74.0-1.3+deb11u16.root.io.16"},{"fixed":"7.74.0-1.3+deb11u16.root.io.14"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Module for Basesystem 15 SP6","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.6.0-150600.4.12.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 15.6","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.6.0-150600.4.12.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Installer Updates 15 SP4","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Installer Updates 15 SP5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Micro 5.3","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Micro 5.4","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Micro 5.5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Module for Basesystem 15 SP5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 15 SP4-LTSS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP Applications 15 SP4","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Manager Proxy 4.3","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Manager Server 4.3","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap Micro 5.5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 15.5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-150400.5.56.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 12 SP5-LTSS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-11.98.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-11.98.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 12 SP5-LTSS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-11.98.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-11.98.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Micro 6.0","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.6.0-4.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Micro 6.1","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.12.1-slfo.1.1_1.1"}]}],"bundled":4},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.81.0-1ubuntu1.19"}]}],"versions":["7.74.0-1.3ubuntu2","7.74.0-1.3ubuntu3","7.80.0-3","7.81.0-1","7.81.0-1ubuntu1.1","7.81.0-1ubuntu1.2","7.81.0-1ubuntu1.3","7.81.0-1ubuntu1.4","7.81.0-1ubuntu1.6","7.81.0-1ubuntu1.7","7.81.0-1ubuntu1.8","7.81.0-1ubuntu1.10","7.81.0-1ubuntu1.11","7.81.0-1ubuntu1.13","7.81.0-1ubuntu1.14","7.81.0-1ubuntu1.15","7.81.0-1ubuntu1.16","7.81.0-1ubuntu1.17","7.81.0-1ubuntu1.18"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.5.0-2ubuntu10.5"}]}],"versions":["8.2.1-1ubuntu3","8.2.1-1ubuntu3.1","8.4.0-2ubuntu1","8.5.0-2ubuntu1","8.5.0-2ubuntu2","8.5.0-2ubuntu8","8.5.0-2ubuntu9","8.5.0-2ubuntu10","8.5.0-2ubuntu10.1","8.5.0-2ubuntu10.2","8.5.0-2ubuntu10.3","8.5.0-2ubuntu10.4"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.81.0-1ubuntu1.19"}]}],"versions":["7.74.0-1.3ubuntu2","7.74.0-1.3ubuntu3","7.80.0-3","7.81.0-1","7.81.0-1ubuntu1.1","7.81.0-1ubuntu1.2","7.81.0-1ubuntu1.3","7.81.0-1ubuntu1.4","7.81.0-1ubuntu1.6","7.81.0-1ubuntu1.7","7.81.0-1ubuntu1.8","7.81.0-1ubuntu1.10","7.81.0-1ubuntu1.11","7.81.0-1ubuntu1.13","7.81.0-1ubuntu1.14","7.81.0-1ubuntu1.15","7.81.0-1ubuntu1.16","7.81.0-1ubuntu1.17","7.81.0-1ubuntu1.18"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.5.0-2ubuntu10.5"}]}],"versions":["8.2.1-1ubuntu3","8.2.1-1ubuntu3.1","8.4.0-2ubuntu1","8.5.0-2ubuntu1","8.5.0-2ubuntu2","8.5.0-2ubuntu8","8.5.0-2ubuntu9","8.5.0-2ubuntu10","8.5.0-2ubuntu10.1","8.5.0-2ubuntu10.2","8.5.0-2ubuntu10.3","8.5.0-2ubuntu10.4"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"curl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.11.0-1.1"}]}]}],"products":[{"vendor":"curl","product":"curl"},{"vendor":"haxx","product":"curl"}],"references":[{"url":"https://curl.se/docs/CVE-2024-9681.json","tags":["Vendor Advisory","web"]},{"url":"https://curl.se/docs/CVE-2024-9681.html","tags":["Patch","Vendor Advisory","web","advisory","report"]},{"url":"https://hackerone.com/reports/2764830","tags":["Exploit","Issue Tracking","Patch","Third Party Advisory","web","report"]},{"url":"http://www.openwall.com/lists/oss-security/2024/11/06/2","tags":["Mailing List","Patch","Third Party Advisory","web"]},{"url":"https://security.netapp.com/advisory/ntap-20241213-0006/","tags":["advisory","web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/13","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/10","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/9","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/8","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/5","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/4","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/12","tags":["web"]},{"url":"http://seclists.org/fulldisclosure/2025/Apr/11","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-9681","tags":["web","advisory"]},{"url":"https://security.netapp.com/advisory/ntap-20241213-0006","tags":["web"]},{"url":"https://github.com/advisories/GHSA-g337-g667-mjvw","tags":["web"]},{"url":"https://security.alpinelinux.org/vuln/CVE-2024-9681","tags":["advisory"]},{"url":"https://docs.bell-sw.com/security/cves/CVE-2024-9681","tags":["advisory"]},{"url":"https://docs.bell-sw.com/security/advisories/BELL-SA-2024-60","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/almalinux9.2esu/CLSA-2025-1764773365.html","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/tuxcare9.6esu/CLSA-2026-1767628458.html","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/9xxx/CVE-2024-9681.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2024-9681","tags":["advisory"]},{"url":"https://advisories.mageia.org/MGASA-2024-0360.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=33730","tags":["report"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2024-2388","tags":["advisory"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2024-2389","tags":["advisory"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2024-2472","tags":["advisory"]},{"url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2024-2473","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2024/suse-su-20243925-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1232528","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2024-9681","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2024/suse-su-20243926-1/","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2024/suse-su-20243927-1/","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2024/suse-su-20243927-2/","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2025/suse-su-202520083-1/","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2025/suse-su-202520239-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1230093","tags":["report"]},{"url":"https://bugzilla.suse.com/1234068","tags":["report"]},{"url":"https://bugzilla.suse.com/1236589","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2024-11053","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-8096","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-0665","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2024-9681","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2024-9681","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-7104-1","tags":["advisory"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2024-9681","title":"HSTS subdomain overwrites parent cache entry","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T07:47:20.162Z","modified":"2025-11-03T20:56:39.087Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium","assessor":"adp"}],"updated_at":"2026-11-02T14:34:05.823187Z"}],"euvd":[{"id":"EUVD-2024-50377","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T07:47:20Z","modified":"2025-11-03T20:56:39Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T19:49:32.126029Z"}],"ghsa":[{"id":"GHSA-g337-g667-mjvw","title":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's...","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T09:31:21Z","modified":"2025-11-03T21:31:32Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-697"],"updated_at":"2026-11-02T15:04:18.722049Z"}],"nvd":[{"id":"CVE-2024-9681","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03.74Z","modified":"2026-06-17T08:25:03.177Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium","assessor":"primary"},{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-697"],"updated_at":"2026-11-02T14:10:35.864552Z"}],"osv":[{"id":"ALPINE-CVE-2024-9681","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03.74Z","modified":"2026-11-02T11:17:50.141137382Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:27:49.709457Z"},{"id":"AZL-52335","title":"CVE-2024-9681 affecting package curl for versions less than 8.8.0-5","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:33:25.303803Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.3228Z"},{"id":"AZL-52347","title":"CVE-2024-9681 affecting package curl for versions less than 8.8.0-4","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:54:17.479617Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.3228Z"},{"id":"AZL-52402","title":"CVE-2024-9681 affecting package cmake for versions less than 3.21.4-16","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:33:25.475622Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.3228Z"},{"id":"AZL-52405","title":"CVE-2024-9681 affecting package cmake for versions less than 3.30.3-4","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-11-05T05:40:51Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-05T16:41:20.675084Z"},{"id":"AZL-52414","title":"CVE-2024-9681 affecting package mysql for versions less than 8.0.40-5","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:51:56.620112Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.595149Z"},{"id":"AZL-52426","title":"CVE-2024-9681 affecting package mysql for versions less than 8.0.40-3","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:33:26.160604Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.595149Z"},{"id":"AZL-52444","title":"CVE-2024-9681 affecting package rust for versions less than 1.72.0-10","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-04-21T04:33:25.924663Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:06.595149Z"},{"id":"AZL-52449","title":"CVE-2024-9681 affecting package tensorflow for versions less than 2.16.1-7","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:15:03Z","modified":"2026-11-05T05:40:51Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-05T16:41:20.675084Z"},{"id":"BELL-CVE-2024-9681","status":"published","published":"2024-11-07T05:59:38.538204Z","modified":"2026-01-26T09:41:21.178928Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:28:21.227396Z"},{"id":"CVE-2024-9681","title":"HSTS subdomain overwrites parent cache entry","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T07:47:20.162Z","modified":"2026-10-28T02:31:01.135481016Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:45.712478Z"},{"id":"DEBIAN-CVE-2024-9681","description":"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.","status":"published","published":"2024-11-06T08:15:03.74Z","modified":"2026-11-02T12:03:12.719832917Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:45:44.747956Z"},{"id":"JLSEC-2026-419","title":"When curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain's...","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2026-05-04T13:12:06.605Z","modified":"2026-07-18T00:01:59.615482713Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-02T15:47:18.573531Z"},{"id":"OESA-2024-2388","title":"curl security update","description":"cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various protocols.\r\n\r\nSecurity Fix(es):\r\n\r\nWhen curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain\u0026apos;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\u0026apos;s expiry timeout *bleed over* and get set for the parent domain `example.com` in curl\u0026apos;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\u0026apos;s entry *earlier*, thus making curl inadvertently switch back to insecure HTTP earlier than otherwise intended.(CVE-2024-9681)","status":"published","published":"2024-11-15T11:07:51Z","modified":"2026-08-18T01:18:38.366595334Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:42.253598Z"},{"id":"OESA-2024-2389","title":"curl security update","description":"cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various protocols.\r\n\r\nSecurity Fix(es):\r\n\r\nWhen curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain\u0026apos;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\u0026apos;s expiry timeout *bleed over* and get set for the parent domain `example.com` in curl\u0026apos;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\u0026apos;s entry *earlier*, thus making curl inadvertently switch back to insecure HTTP earlier than otherwise intended.(CVE-2024-9681)","status":"published","published":"2024-11-15T11:07:52Z","modified":"2026-08-18T01:18:38.337126456Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:42.253598Z"},{"id":"OESA-2024-2472","title":"curl security update","description":"cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various protocols.\r\n\r\nSecurity Fix(es):\r\n\r\nWhen curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain\u0026apos;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\u0026apos;s expiry timeout *bleed over* and get set for the parent domain `example.com` in curl\u0026apos;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\u0026apos;s entry *earlier*, thus making curl inadvertently switch back to insecure HTTP earlier than otherwise intended.(CVE-2024-9681)","status":"published","published":"2024-11-22T11:07:57Z","modified":"2026-08-18T01:18:41.523631717Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:42.253598Z"},{"id":"OESA-2024-2473","title":"curl security update","description":"cURL is a computer software project providing a library (libcurl) and command-line tool (curl) for transferring data using various protocols.\r\n\r\nSecurity Fix(es):\r\n\r\nWhen curl is asked to use HSTS, the expiry time for a subdomain might overwrite a parent domain\u0026apos;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\u0026apos;s expiry timeout *bleed over* and get set for the parent domain `example.com` in curl\u0026apos;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\u0026apos;s entry *earlier*, thus making curl inadvertently switch back to insecure HTTP earlier than otherwise intended.(CVE-2024-9681)","status":"published","published":"2024-11-22T11:07:57Z","modified":"2026-08-18T01:18:41.490389932Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:52:42.253598Z"},{"id":"ROOT-OS-DEBIAN-11-CVE-2024-9681","title":"CVE-2024-9681 in curl - Patched by Root","description":"Root has patched CVE-2024-9681 in the curl package for Root:Debian:11. Multiple fixed versions available.","status":"published","published":"2026-08-20T12:49:54Z","modified":"2026-08-20T13:30:13.104285364Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:53:29.077857Z"},{"id":"UBUNTU-CVE-2024-9681","description":"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.","status":"published","published":"2024-11-06T00:00:00Z","modified":"2026-04-22T15:27:36.592346Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:L","level":"medium"},{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T16:55:18.664792Z"},{"id":"CLSA-2025-1764773365","title":"curl: Fix of CVE-2024-9681","description":"- CVE-2024-9681: improve HSTS subdomain handling to prevent incorrectly overriding\n  parent domain entries","status":"published","published":"2025-12-03T14:49:28Z","modified":"2026-06-01T00:31:20.122551391Z","updated_at":"2026-11-02T15:43:42.847264Z"},{"id":"CLSA-2026-1767628458","title":"curl: Fix of CVE-2024-9681","description":"- CVE-2024-9681: improve HSTS subdomain handling to prevent incorrectly overriding\n  parent domain entries","status":"published","published":"2026-01-05T15:54:22Z","modified":"2026-06-01T00:32:37.203969925Z","updated_at":"2026-11-02T15:43:42.847264Z"},{"id":"CURL-CVE-2024-9681","title":"HSTS subdomain overwrites parent cache entry","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later than\notherwise intended.\n\nThis affects curl using applications that enable HSTS and use URLs with the\ninsecure `HTTP://` scheme and perform transfers with hosts like\n`x.example.com` as well as `example.com` where the first host is a subdomain\nof the second host.\n\n(The HSTS cache either needs to have been populated manually or there needs to\nhave been previous HTTPS accesses done as the cache needs to have entries for\nthe domains involved to trigger this problem.)\n\nWhen `x.example.com` responds with `Strict-Transport-Security:` headers, this\nbug can make the subdomain's expiry timeout *bleed over* and get set for the\nparent domain `example.com` in curl's HSTS cache.\n\nThe result of a triggered bug is that HTTP accesses to `example.com` get\nconverted to HTTPS for a different period of time than what was asked for by\nthe origin server. If `example.com` for example stops supporting HTTPS at its\nexpiry time, curl might then fail to access `http://example.com` until the\n(wrongly set) timeout expires. This bug can also expire the parent's entry\n*earlier*, thus making curl inadvertently switch back to insecure HTTP earlier\nthan otherwise intended.","status":"published","published":"2024-11-06T08:00:00Z","modified":"2026-10-25T01:04:38.513772349Z","updated_at":"2026-11-02T15:43:55.998148Z"},{"id":"MGASA-2024-0360","title":"Updated curl packages fix security vulnerability","description":"When curl is asked to use HSTS, the expiry time for a subdomain might\noverwrite a parent domain's cache entry, making it end sooner or later\nthan otherwise intended. This affects curl using applications that\nenable HSTS and use URLs with the insecure HTTP:// scheme and perform\ntransfers with hosts like x.example.com as well as example.com where the\nfirst host is a subdomain of the second host. This flaw also affects the\ncurl command line tool.\nWhen triggered, this is a potential minor DoS security problem when\ntrying to use HTTPS when that no longer works or a cleartext\ntransmission of data that was otherwise intended to possibly be\nprotected.\nThis update fixes the issue so subdomains cannot affect the HSTS cache\nof a parent domain.\n","status":"published","published":"2024-11-12T19:53:59Z","modified":"2026-04-16T04:43:14.657918498Z","updated_at":"2026-11-02T15:49:42.684501Z"},{"id":"openSUSE-SU-2024:14476-1","title":"curl-8.11.0-1.1 on GA media","description":"These are all security issues fixed in the curl-8.11.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-11-08T00:00:00Z","modified":"2026-02-04T03:16:20.500951Z","updated_at":"2026-11-02T16:58:36.976155Z"},{"id":"SUSE-SU-2024:3925-1","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\n- CVE-2024-9681: Fixed HSTS subdomain overwrites parent cache entry (bsc#1232528)\n","status":"published","published":"2024-11-06T10:14:29Z","modified":"2026-02-04T03:51:27.492463Z","updated_at":"2026-11-02T15:53:55.639015Z"},{"id":"SUSE-SU-2024:3926-1","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\n- CVE-2024-9681: Fixed HSTS subdomain overwrites parent cache entry (bsc#1232528)\n","status":"published","published":"2024-11-06T10:15:27Z","modified":"2026-02-04T03:13:33.777985Z","updated_at":"2026-11-02T15:53:55.639015Z"},{"id":"SUSE-SU-2024:3927-1","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\n- CVE-2024-9681: Fixed HSTS subdomain overwrites parent cache entry (bsc#1232528)\n","status":"published","published":"2024-12-19T10:22:10Z","modified":"2026-02-04T03:24:02.202413Z","updated_at":"2026-11-02T15:53:55.639015Z"},{"id":"SUSE-SU-2024:3927-2","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\n- CVE-2024-9681: Fixed HSTS subdomain overwrites parent cache entry (bsc#1232528)\n","status":"published","published":"2024-12-19T10:22:10Z","modified":"2026-02-04T03:56:49.649317Z","updated_at":"2026-11-02T15:53:55.639015Z"},{"id":"SUSE-SU-2025:20083-1","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\n- CVE-2024-9681: Fixed HSTS subdomain overwrites parent cache entry (bsc#1232528)\n","status":"published","published":"2025-02-03T09:07:41Z","modified":"2026-03-23T04:47:07.444438Z","updated_at":"2026-11-02T15:53:59.381172Z"},{"id":"SUSE-SU-2025:20239-1","title":"Security update for curl","description":"This update for curl fixes the following issues:\n\nUpdate to 8.12.1:\n\n  * Bugfixes:\n\n    - asyn-thread: fix build with 'CURL_DISABLE_SOCKETPAIR'\n    - asyn-thread: fix HTTPS RR crash\n    - asyn-thread: fix the returned bitmask from Curl_resolver_getsock\n    - asyn-thread: survive a c-ares channel set to NULL\n    - cmake: always reference OpenSSL and ZLIB via imported targets\n    - cmake: respect 'GNUTLS_CFLAGS' when detected via 'pkg-config'\n    - cmake: respect 'GNUTLS_LIBRARY_DIRS' in 'libcurl.pc' and 'curl-config'\n    - content_encoding: #error on too old zlib\n    - imap: TLS upgrade fix\n    - ldap: drop support for legacy Novell LDAP SDK\n    - libssh2: comparison is always true because rc \u003c= -1\n    - libssh2: raise lowest supported version to 1.2.8\n    - libssh: drop support for libssh older than 0.9.0\n    - openssl-quic: ignore ciphers for h3\n    - pop3: TLS upgrade fix\n    - runtests: fix the disabling of the memory tracking\n    - runtests: quote commands to support paths with spaces\n    - scache: add magic checks\n    - smb: silence '-Warray-bounds' with gcc 13+\n    - smtp: TLS upgrade fix\n    - tool_cfgable: sort struct fields by size, use bitfields for booleans\n    - tool_getparam: add \"TLS required\" flag for each such option\n    - vtls: fix multissl-init\n    - wakeup_write: make sure the eventfd write sends eight bytes\n\nUpdate to 8.12.0:\n\n  * Security fixes:\n\n    - [bsc#1234068, CVE-2024-11053] curl could leak the password used\n      for the first host to the followed-to host under certain circumstances.\n    - [bsc#1232528, CVE-2024-9681] HSTS subdomain overwrites parent cache entry\n    - [bsc#1236589, CVE-2025-0665] eventfd double close\n\n  * Changes:\n\n    - curl: add byte range support to --variable reading from file\n    - curl: make --etag-save acknowledge --create-dirs\n    - getinfo: fix CURLINFO_QUEUE_TIME_T and add 'time_queue' var\n    - getinfo: provide info which auth was used for HTTP and proxy\n    - hyper: drop support\n    - openssl: add support to use keys and certificates from PKCS#11 provider\n    - QUIC: 0RTT for gnutls via CURLSSLOPT_EARLYDATA\n    - vtls: feature ssls-export for SSL session im-/export\n\n  * Bugfixes:\n\n    - altsvc: avoid integer overflow in expire calculation\n    - asyn-ares: acknowledge CURLOPT_DNS_SERVERS set to NULL\n    - asyn-ares: fix memory leak\n    - asyn-ares: initial HTTPS resolve support\n    - asyn-thread: use c-ares to resolve HTTPS RR\n    - async-thread: avoid closing eventfd twice\n    - cd2nroff: do not insist on quoted \u003c\u003e within backticks\n    - cd2nroff: support \"none\" as a TLS backend\n    - conncache: count shutdowns against host and max limits\n    - content_encoding: drop support for zlib before 1.2.0.4\n    - content_encoding: namespace GZIP flag constants\n    - content_encoding: put the decomp buffers into the writer structs\n    - content_encoding: support use of custom libzstd memory functions\n    - cookie: cap expire times to 400 days\n    - cookie: parse only the exact expire date\n    - curl: return error if etag options are used with multiple URLs\n    - curl_multi_fdset: include the shutdown connections in the set\n    - curl_sha512_256: rename symbols to the curl namespace\n    - curl_url_set.md: adjust the added-in to 7.62.0\n    - doh: send HTTPS RR requests for all HTTP(S) transfers\n    - easy: allow connect-only handle reuse with easy_perform\n    - easy: make curl_easy_perform() return error if connection still there\n    - easy_lock: use Sleep(1) for thread yield on old Windows\n    - ECH: update APIs to those agreed with OpenSSL maintainers\n    - GnuTLS: fix 'time_appconnect' for early data\n    - HTTP/2: strip TE request header\n    - http2: fix data_pending check\n    - http2: fix value stored to 'result' is never read\n    - http: ignore invalid Retry-After times\n    - http_aws_sigv4: Fix invalid compare function handling zero-length pairs\n    - https-connect: start next immediately on failure\n    - lib: redirect handling by protocol handler\n    - multi: fix curl_multi_waitfds reporting of fd_count\n    - netrc: 'default' with no credentials is not a match\n    - netrc: fix password-only entries\n    - netrc: restore _netrc fallback logic\n    - ngtcp2: fix memory leak on connect failure\n    - openssl: define `HAVE_KEYLOG_CALLBACK` before use\n    - openssl: fix ECH logic\n    - osslq: use SSL_poll to determine writeability of QUIC streams\n    - sectransp: free certificate on error\n    - select: avoid a NULL deref in cwfds_add_sock\n    - src: omit hugehelp and ca-embed from libcurltool\n    - ssl session cache: change cache dimensions\n    - system.h: add 64-bit curl_off_t definitions for NonStop\n    - telnet: handle single-byte input option\n    - TLS: check connection for SSL use, not handler\n    - tool_formparse.c: make curlx_uztoso a static in here\n    - tool_formparse: accept digits in --form type= strings\n    - tool_getparam: ECH param parsing refix\n    - tool_getparam: fail --hostpubsha256 if libssh2 is not used\n    - tool_getparam: fix \"Ignored Return Value\"\n    - tool_getparam: fix memory leak on error in parse_ech\n    - tool_getparam: fix the ECH parser\n    - tool_operate: make --etag-compare always accept a non-existing file\n    - transfer: fix CURLOPT_CURLU override logic\n    - urlapi: fix redirect to a new fragment or query (only)\n    - vquic: make vquic_send_packets not return without setting psent\n    - vtls: fix default SSL backend as a fallback\n    - vtls: only remember the expiry timestamp in session cache\n    - websocket: fix message send corruption\n    - x509asn1: add parse recursion limit\n\nUpdate to 8.11.1:\n\n  * Security fixes:\n\n    - netrc and redirect credential leak [bsc#1234068, CVE-2024-11053]\n\n  * Bugfixes:\n\n    - build: fix ECH to always enable HTTPS RR\n    - cookie: treat cookie name case sensitively\n    - curl-rustls.m4: keep existing 'CPPFLAGS'/'LDFLAGS' when detected\n    - curl: use realtime in trace timestamps\n    - digest: produce a shorter cnonce in Digest headers\n    - docs: document default 'User-Agent'\n    - docs: suggest --ssl-reqd instead of --ftp-ssl\n    - duphandle: also init netrc\n    - hostip: don't use the resolver for FQDN localhost\n    - http_negotiate: allow for a one byte larger channel binding buffer\n    - krb5: fix socket/sockindex confusion, MSVC compiler warnings\n    - libssh: use libssh sftp_aio to upload file\n    - libssh: when using IPv6 numerical address, add brackets\n    - mime: fix reader stall on small read lengths\n    - mk-ca-bundle: remove CKA_NSS_SERVER_DISTRUST_AFTER conditions\n    - mprintf: fix the integer overflow checks\n    - multi: fix callback for 'CURLMOPT_TIMERFUNCTION' not being called again when...\n    - netrc: address several netrc parser flaws\n    - netrc: support large file, longer lines, longer tokens\n    - nghttp2: use custom memory functions\n    - OpenSSL: improvde error message on expired certificate\n    - openssl: remove three \"Useless Assignments\"\n    - openssl: stop using SSL_CTX_ function prefix for our functions\n    - pytest: add test for use of CURLMOPT_MAX_HOST_CONNECTIONS\n    - rtsp: check EOS in the RTSP receive and return an error code\n    - schannel: remove TLS 1.3 ciphersuite-list support\n    - setopt: fix CURLOPT_HTTP_CONTENT_DECODING\n    - setopt: fix missing options for builds without HTTP \u0026 MQTT\n    - socket: handle binding to \"host!\u003cip\u003e\"\n    - socketpair: fix enabling 'USE_EVENTFD'\n    - strtok: use namespaced 'strtok_r' macro instead of redefining it\n\nUpdate to 8.11.0:\n\n  * Security fixes: [bsc#1232528, CVE-2024-9681]\n\n    - curl: HSTS subdomain overwrites parent cache entry\n\n  * Changes:\n\n    - curl: --create-dirs works for --dump-header as well\n    - gtls: Add P12 format support\n    - ipfs: add options to disable\n    - TLS: TLSv1.3 earlydata support for curl\n    - WebSockets: make support official (non-experimental)\n\n  * Bugfixes:\n\n    - build: clarify CA embed is for curl tool, mark default, improve summary\n    - build: show if CA bundle to embed was found\n    - build: tidy up and improve versioned-symbols options\n    - cmake/FindNGTCP2: use library path as hint for finding crypto module\n    - cmake: disable default OpenSSL if BearSSL, GnuTLS or Rustls is enabled\n    - cmake: rename LDAP dependency config variables to match Find modules\n    - cmake: replace 'check_include_file_concat()' for LDAP and GSS detection\n    - cmake: use OpenSSL for LDAP detection only if available\n    - curl: add build options for safe/no CA bundle search (Windows)\n    - curl: detect ECH support dynamically, not at build time\n    - curl_addrinfo: support operating systems with only getaddrinfo(3)\n    - ftp: fix 0-length last write on upload from stdin\n    - gnutls: use session cache for QUIC\n    - hsts: improve subdomain handling\n    - hsts: support \"implied LWS\" properly around max-age\n    - http2: auto reset stream on server eos\n    - json.md: cli-option '--json' is an alias of '--data-binary'\n    - lib: move curl_path.[ch] into vssh/\n    - lib: remove function pointer typecasts for hmac/sha256/md5\n    - libssh.c: handle EGAINS during proto-connect correctly\n    - libssh2: use the filename buffer when getting the homedir\n    - multi.c: warn/assert on stall only without timer\n    - negotiate: conditional check around GSS \u0026 SSL specific code\n    - netrc: cache the netrc file in memory\n    - ngtcp2: do not loop on recv\n    - ngtcp2: set max window size to 10x of initial (128KB)\n    - openssl quic: populate x509 store before handshake\n    - openssl: extend the OpenSSL error messages\n    - openssl: improve retries on shutdown\n    - quic: use send/recvmmsg when available\n    - schannel: fix TLS cert verification by IP SAN\n    - schannel: ignore error on recv beyond close notify\n    - select: use poll() if existing, avoid poll() with no sockets\n    - sendf: add condition to max-filesize check\n    - server/mqttd: fix two memory leaks\n    - setopt: return error for bad input to CURLOPT_RTSP_REQUEST\n    - setopt_cptr: make overflow check only done when needed\n    - tls: avoid abusing CURLE_SSL_ENGINE_INITFAILED\n    - tool: support --show-headers AND --remote-header-name\n    - tool_operate: make --skip-existing work for --parallel\n    - url: connection reuse on h3 connections\n    - url: use same credentials on redirect\n    - urlapi: normalize the IPv6 address\n    - version: say quictls in MSH3 builds\n    - vquic: fix compiler warning with gcc + MUSL\n    - vquic: recv_mmsg, use fewer, but larger buffers\n    - vtls: convert Curl_pin_peer_pubkey to use dynbuf\n    - vtls: convert pubkey_pem_to_der to use dynbuf\n\nUpdate to 8.10.1:\n\n  * Bugfixes:\n\n    - autotools: fix `--with-ca-embed` build rule\n    - cmake: ensure `CURL_USE_OPENSSL`/`USE_OPENSSL_QUIC` are set in sync\n    - cmake: fix MSH3 to appear on the feature list\n    - connect: store connection info when really done\n    - FTP: partly revert eeb7c1280742f5c8fa48a4340fc1e1a1a2c7075a\n    - http2: when uploading data from stdin, fix eos forwarding\n    - http: make max-filesize check not count ignored bodies\n    - lib: fix AF_INET6 use outside of USE_IPV6\n    - multi: check that the multi handle is valid in curl_multi_assign\n    - QUIC: on connect, keep on trying on draining server\n    - request: correctly reset the eos_sent flag\n    - setopt: remove superfluous use of ternary expressions\n    - singleuse: drop `Curl_memrchr()` for no-HTTP builds\n    - tool_cb_wrt: use \"curl_response\" if no file name in URL\n    - transfer: fix sendrecv() without interim poll\n    - vtls: fix `Curl_ssl_conn_config_match` doc param\n\nUpdate to version 8.10.0:\n\n  * Security fixes:\n\n    - [bsc#1230093, CVE-2024-8096] curl: OCSP stapling bypass with GnuTLS\n\n  * Changes:\n\n    - curl: make --rate accept \"number of units\"\n    - curl: make --show-headers the same as --include\n    - curl: support --dump-header % to direct to stderr\n    - curl: support embedding a CA bundle and --dump-ca-embed\n    - curl: support repeated use of the verbose option; -vv etc\n    - curl: use libuv for parallel transfers with --test-event\n    - vtls: stop offering alpn http/1.1 for http2-prior-knowledge\n\n  * Bugfixes:\n\n    - curl: allow 500MB data URL encode strings\n    - curl: warn on unsupported SSL options\n    - Curl_rand_bytes to control env override\n    - curl_sha512_256: fix symbol collisions with nettle library\n    - dist: fix reproducible build from release tarball\n    - http2: fix GOAWAY message sent to server\n    - http2: improve rate limiting of downloads\n    - INSTALL.md: MultiSSL and QUIC are mutually exclusive\n    - lib: add eos flag to send methods\n    - lib: make SSPI global symbols use Curl_ prefix\n    - lib: prefer `CURL_SHA256_DIGEST_LENGTH` over the unprefixed name\n    - lib: remove the final strncpy() calls\n    - lib: remove use of RANDOM_FILE\n    - Makefile.mk: fixup enabling libidn2\n    - max-filesize.md: mention zero disables the limit\n    - mime: avoid inifite loop in client reader\n    - ngtcp2: use NGHTTP3 prefix instead of NGTCP2 for errors in h3 callbacks\n    - openssl quic: fix memory leak\n    - openssl: certinfo errors now fail correctly\n    - openssl: fix the data race when sharing an SSL session between threads\n    - openssl: improve shutdown handling\n    - POP3: fix multi-line responses\n    - pop3: use the protocol handler -\u003ewrite_resp\n    - progress: ratelimit/progress tweaks\n    - rand: only provide weak random when needed\n    - sectransp: fix setting tls version\n    - setopt: make CURLOPT_TFTP_BLKSIZE accept bad values\n    - sha256: fix symbol collision between nettle (GnuTLS) and OpenSSL\n    - sigpipe: init the struct so that first apply ignores\n    - smb: convert superflous assign into assert\n    - smtp: add tracing feature\n    - spnego_gssapi: implement TLS channel bindings for openssl\n    - src: delete `curlx_m*printf()` aliases\n    - ssh: deduplicate SSH backend includes (and fix libssh cmake unity build)\n    - tool_operhlp: fix \"potentially uninitialized local variable 'pc' used\"\n    - tool_paramhlp: bump maximum post data size in memory to 16GB\n    - transfer: skip EOS read when download done\n    - url: fix connection reuse for HTTP/2 upgrades\n    - urlapi: verify URL *decoded* hostname when set\n    - urldata: introduce `data-\u003emid`, a unique identifier inside a multi\n    - vtls: add SSLSUPP_CIPHER_LIST\n    - vtls: fix static function name collisions between TLS backends\n    - vtls: init ssl peer only once\n    - websocket: introduce blocking sends\n    - ws: flags to opcodes should ignore CURLWS_CONT flag\n    - x509asn1: raise size limit for x509 certification information\n","status":"published","published":"2025-03-13T10:36:20Z","modified":"2026-03-23T04:48:13.246694Z","updated_at":"2026-11-02T15:53:59.381172Z"},{"id":"USN-7104-1","title":"curl vulnerability","description":"It was discovered that curl could overwrite the HSTS expiry of the parent\ndomain with the subdomain's HSTS entry. This could lead to curl switching\nback to insecure HTTP earlier than otherwise intended, resulting in\ninformation exposure.\n","status":"published","published":"2024-11-18T15:10:29Z","modified":"2026-04-22T10:53:52.515687Z","updated_at":"2026-11-02T16:58:18.876384Z"}]}}
