CVE-2023-28319
UAF in SSH sha256 fingerprint check
Project curl Security Advisory, May 17th 2023 - Permalink
VULNERABILITY
libcurl offers a feature to verify an SSH server's public key using a SHA 256 hash. When this check fails, libcurl would free the memory for the fingerprint before it returns an error message containing the (now freed) hash.
This flaw risks inserting sensitive heap-based data into the error message that might be shown to users or otherwise get leaked and revealed.
INFO
This only applies to users of the
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
option, which is
only supported for libcurl built with libssh2 (curl
optionally supports other SSH backends). Either of the options
CURLOPT_VERBOSE
or CURLOPT_ERRORBUFFER
also
need to be set to trigger the problem.
The damage is somewhat limited by the extremely short time window between the free and the use of the freed memory.
The largest possible info leak that can happen due to this flaw per
trigger occasion, is limited to CURL_ERROR_SIZE
- the error
message prefix length (69) = 186 bytes. It also stops at the first null
byte within those 186 bytes.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2023-28319 to this issue.
CWE-416: Use After Free
Severity: Medium
AFFECTED VERSIONS
- Affected versions: curl 7.81.0 to and including 8.0.1
- Not affected versions: curl < 7.81.0 and curl >= 8.1.0
- Introduced-in: https://github.com/curl/curl/commit/3467e89bb97e6c87c7
libcurl is used by many applications, but not always advertised as such!
SOLUTION
RECOMMENDATIONS
A - Upgrade curl to version 8.1.0
B - Apply the patch to your local version
C - Do not use CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
TIMELINE
This issue was reported to the curl project on March 21 2023. We contacted distros@openwall on May 9, 2023.
curl 8.1.0 was released on May 17 2023, coordinated with the publication of this advisory.
CREDITS
- Reported-by: Wei Chong Tan
- Patched-by: Daniel Stenberg
Thanks a lot!