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.

Crate sim2h

Dependencies

(44 total, 28 outdated, 4 possibly insecure)

CrateRequiredLatestStatus
 backtrace=0.3.270.3.75out of date
 base64=0.10.10.22.1out of date
 chashmap=2.2.22.2.2up to date
 chrono ⚠️=0.4.60.4.41out of date
 crossbeam-channel=0.3.80.5.15out of date
 env_logger=0.6.10.11.8out of date
 futures=0.3.20.3.31out of date
 hcid=0.0.60.0.6up to date
 holochain_common=0.0.46-alpha1N/Aup to date
 holochain_core_types=0.0.46-alpha10.0.34up to date
 holochain_json_api=0.0.230.0.50out of date
 holochain_locksmith=0.0.46-alpha1N/Aup to date
 holochain_metrics=0.0.46-alpha10.5.3out of date
 holochain_persistence_api=0.0.180.0.18up to date
 holochain_tracing=0.0.240.0.24up to date
 holochain_tracing_macros=0.0.240.0.24up to date
 im=14.0.015.1.0out of date
 in_stream=0.0.46-alpha1N/Aup to date
 lazy_static=1.4.01.5.0out of date
 lib3h=0.0.420.0.42up to date
 lib3h_crypto_api=0.0.420.0.42up to date
 lib3h_protocol=0.0.420.0.42up to date
 lib3h_sodium=0.0.420.0.42up to date
 lib3h_zombie_actor=0.0.420.0.42up to date
 nanoid=0.2.00.4.0out of date
 native-tls=0.2.30.2.14out of date
 newrelic=0.2.20.2.2up to date
 num_cpus=1.11.11.17.0out of date
 openssl ⚠️=0.10.250.10.73out of date
 parking_lot=0.8.00.12.4out of date
 rand=0.7.30.9.1out of date
 serde=1.0.1041.0.219out of date
 serde_derive=1.0.1041.0.219out of date
 serde_json=1.0.471.0.140out of date
 snowflake=1.3.01.3.0up to date
 threadpool=1.7.11.8.1out of date
 tokio ⚠️=0.2.111.45.1out of date
 tracing=0.1.130.1.41out of date
 tracing-futures=0.2.20.2.5out of date
 tungstenite ⚠️=0.9.20.27.0out of date
 twox-hash^1.5.02.1.1out of date
 url=2.1.02.5.4out of date
 url2=0.0.40.0.6out of date
 uuid^0.41.17.0out of date

Security Vulnerabilities

chrono: Potential segfault in `localtime_r` invocations

RUSTSEC-2020-0159

Impact

Unix-like operating systems may segfault due to dereferencing a dangling pointer in specific circumstances. This requires an environment variable to be set in a different thread than the affected functions. This may occur without the user's knowledge, notably in a third-party library.

Workarounds

No workarounds are known.

References

tokio: Data race when sending and receiving after closing a `oneshot` channel

RUSTSEC-2021-0124

If a tokio::sync::oneshot channel is closed (via the oneshot::Receiver::close method), a data race may occur if the oneshot::Sender::send method is called while the corresponding oneshot::Receiver is awaited or calling try_recv.

When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to cause memory corruption.

Note that the race only occurs when both halves of the channel are used after the Receiver half has called close. Code where close is not used, or where the Receiver is not awaited and try_recv is not called after calling close, is not affected.

See tokio#4225 for more details.

openssl: `openssl` `X509NameBuilder::build` returned object is not thread safe

RUSTSEC-2023-0022

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.

openssl: `openssl` `SubjectAlternativeName` and `ExtendedKeyUsage::other` allow arbitrary file read

RUSTSEC-2023-0023

SubjectAlternativeName 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 dereference

RUSTSEC-2023-0024

These 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-read

RUSTSEC-2023-0044

When this function was passed an empty string, openssl would attempt to call strlen on it, reading arbitrary memory until it reached a NUL byte.

tungstenite: Tungstenite allows remote attackers to cause a denial of service

RUSTSEC-2023-0065

The Tungstenite crate through 0.20.0 for Rust allows remote attackers to cause a denial of service (minutes of CPU consumption) via an excessive length of an HTTP header in a client handshake. The length affects both how many times a parse is attempted (e.g., thousands of times) and the average amount of data for each parse attempt (e.g., millions of bytes).

openssl: `MemBio::get_buf` has undefined behavior with empty buffers

RUSTSEC-2024-0357

Previously, 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 free

RUSTSEC-2025-0004

In 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)
});