OpenSSL has a modified
bit that it can set on on X509_NAME
objects. If this
bit is set then the object is not thread-safe even when it appears the code is
not modifying the value.
Thanks to David Benjamin (Google) for reporting this issue.
nextcloud_appsignature 0.2.0
This project might be open to known security vulnerabilities, which can be prevented by tightening the version range of affected dependencies. Find detailed information at the bottom.
nextcloud_appsignature
(5 total, 4 outdated, 1 possibly insecure)
Crate | Required | Latest | Status |
---|---|---|---|
base64 | ^0.7 | 0.22.1 | out of date |
failure | ^0.1 | 0.1.8 | up to date |
futures | ^0.1 | 0.3.31 | out of date |
hex | ^0.2 | 0.4.3 | out of date |
openssl ⚠️ | ^0.9 | 0.10.73 | out of date |
openssl
: `openssl` `X509NameBuilder::build` returned object is not thread safeOpenSSL has a modified
bit that it can set on on X509_NAME
objects. If this
bit is set then the object is not thread-safe even when it appears the code is
not modifying the value.
Thanks to David Benjamin (Google) for reporting this issue.
openssl
: `openssl` `SubjectAlternativeName` and `ExtendedKeyUsage::other` allow arbitrary file readSubjectAlternativeName
and ExtendedKeyUsage
arguments were parsed using the OpenSSL
function X509V3_EXT_nconf
. This function parses all input using an OpenSSL mini-language
which can perform arbitrary file reads.
Thanks to David Benjamin (Google) for reporting this issue.
openssl
: `openssl` `X509Extension::new` and `X509Extension::new_nid` null pointer dereferenceThese functions would crash when the context argument was None with certain extension types.
Thanks to David Benjamin (Google) for reporting this issue.
openssl
: `openssl` `X509VerifyParamRef::set_host` buffer over-readWhen this function was passed an empty string, openssl
would attempt to call strlen
on it, reading arbitrary memory until it reached a NUL byte.
openssl
: `MemBio::get_buf` has undefined behavior with empty buffersPreviously, MemBio::get_buf
called slice::from_raw_parts
with a null-pointer, which violates the functions invariants, leading to undefined behavior. In debug builds this would produce an assertion failure. This is now fixed.
openssl
: ssl::select_next_proto use after freeIn openssl
versions before 0.10.70
, ssl::select_next_proto
can return a slice pointing into the server
argument's buffer but with a lifetime bound to the client
argument. In situations where the server
buffer's lifetime is shorter than the client
buffer's, this can cause a use after free. This could cause the server to crash or to return arbitrary memory contents to the client.
openssl
0.10.70 fixes the signature of ssl::select_next_proto
to properly constrain the output buffer's lifetime to that of both input buffers.
In standard usage of ssl::select_next_proto
in the callback passed to SslContextBuilder::set_alpn_select_callback
, code is only affected if the server
buffer is constructed within the callback. For example:
Not vulnerable - the server buffer has a 'static
lifetime:
builder.set_alpn_select_callback(|_, client_protos| {
ssl::select_next_proto(b"\x02h2", client_protos).ok_or_else(AlpnError::NOACK)
});
Not vulnerable - the server buffer outlives the handshake:
let server_protos = b"\x02h2".to_vec();
builder.set_alpn_select_callback(|_, client_protos| {
ssl::select_next_proto(&server_protos, client_protos).ok_or_else(AlpnError::NOACK)
});
Vulnerable - the server buffer is freed when the callback returns:
builder.set_alpn_select_callback(|_, client_protos| {
let server_protos = b"\x02h2".to_vec();
ssl::select_next_proto(&server_protos, client_protos).ok_or_else(AlpnError::NOACK)
});