SMB send off unrelated memory contents
Project curl Security Advisory, June 17th 2015 - Permalink
libcurl can get tricked by a malicious SMB server to send off data it did not intend to.
In libcurl's state machine function handling the SMB protocol (
smb_request_state()), two length and offset values are extracted from data that has arrived over the network, and those values are subsequently used to figure out what data range to send back.
The values are used and trusted without boundary checks and are just assumed to be valid. This allows carefully handcrafted packages to trick libcurl into responding and sending off data that was not intended. Or just crash if the values cause libcurl to access invalid memory.
This flaw can also affect the curl command line tool if a similar operation series is made with that.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2015-3237 to this issue.
CWE-126: Buffer Over-read
This flaw is relevant for
- Affected versions: libcurl 7.40.0 to and including 7.42.1
- Not affected versions: libcurl < 7.40.0 and libcurl >= 7.43.0
- Introduced-in: https://github.com/curl/curl/commit/e80d9d5902f38407d97158
libcurl is used by many applications, but not always advertised as such!
In version 7.43.0, libcurl properly range checks the values before they are used.
We suggest you take one of the following actions immediately, in order of preference:
A - Upgrade curl and libcurl to version 7.43.0
B - Apply the patch to your version and rebuild
C - Avoid using the SMB protocol
It was first brought up with the curl-security team on May 22 2015. We contacted distros@openwall on June 11.
libcurl 7.43.0 was released on June 17 2015, coordinated with the publication of this advisory.
- Reported-by: Daniel Stenberg
- Patched-by: Daniel Stenberg
Thanks a lot!