Use-after-free of caller-owned server name in client connection constructors
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 0.15.7
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In rustls-ffi 0.12.0 through 0.15.6, `rustls_client_connection_new()` and `rustls_client_connection_new_alpn()` retained a reference to the caller's `server_name` buffer after returning, rather than copying it. The API documentation did not require the buffer to outlive the call and as a result if the caller freed or reused the buffer, later TLS processing read freed memory. Clients that free or reuse the `server_name` buffer after the constructor returns are affected. This is most likely for language bindings that pass temporary strings. Callers that keep the `server_name` buffer alive for the lifetime of the `rustls_client_config` are not affected. Versions 0.12.0 through 0.15.6 are affected. Version 0.15.7+ changed these APIs to copy the input buffer.
Timeline
- Advisory published
- Record last updated
- First seen by cve.now
Affected versions
- rustls-fficrates.io
From 0.12.0 · fixed in 0.15.7