HSTS ignored on multiple requests
Project curl Security Advisory, February 15 2023 - Permalink
curl's HSTS functionality fail when multiple URLs are requested serially.
Using its HSTS support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. This HSTS mechanism would however surprisingly be ignored by subsequent transfers when done on the same command line because the state would not be properly carried on.
Reproducible like this:
curl --hsts "" https://curl.se http://curl.se
The first URL returns HSTS information that the second URL fails to take advantage of.
This is a curl command line issue and does not affect libcurl.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2023-23914 to this issue.
CWE-319: Cleartext Transmission of Sensitive Information
- Affected versions: curl 7.77.0 to and including 7.87.0
- Not affected versions: curl < 7.77.0 and curl >= 7.88.0
- Introduced-in: https://github.com/curl/curl/commit/7385610d0c7
curl is used by many applications, but not always advertised as such!
7.88.0 will share the HSTS state properly between transfers.
A - Upgrade curl to version 7.88.0
B - Apply the patch to your local version
C - Specify all URLs with
HTTPS:// and not
This issue was reported to the curl project on December 21, 2022. We contacted distros@openwall on February 7, 2022.
curl 7.88.0 was released on February 15 2023, coordinated with the publication of this advisory.
- Reported-by: Harry Sintonen
- Patched-by: Daniel Stenberg
Thanks a lot!