HSTS double free
Project curl Security Advisory, March 20th 2023 - Permalink
libcurl supports sharing HSTS data between separate "handles". This sharing was introduced without considerations for doing this sharing across separate threads but there was no indication of this fact in the documentation.
Due to missing mutexes or thread locks, two threads sharing the same HSTS data could end up doing a double free or use after free.
This feature was not implemented to support sharing between threads. That is still left for future improvements. The fix for this issue is therefore a documentation update clarifying that sharing HSTS between threads is not expected to work.
CWE-415: Double Free
Severity is set to Low because
- Not widely used functionality
- The timing necessary to trigger this has to match fairly exact
- Exploiting this for anything but denial of service is difficult
- Affected versions: curl 7.88.0 to and including 7.88.1
- Not affected versions: curl < 7.88.0 and curl >= 8.0.0
- Introduced-in: https://github.com/curl/curl/commit/076a2f629119222a
libcurl is used by many applications, but not always advertised as such!
A - Do not share HSTS data between threads
This issue was reported to the curl project on March 8 2023. We contacted distros@openwall on March 13, 2023.
curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
- Reported-by: Hiroki Kurosawa
- Patched-by: Daniel Stenberg
Thanks a lot!