This project contains known security vulnerabilities. Find detailed information at the bottom.

Crate cargo

Dependencies

(75 total, 24 outdated, 1 insecure)

CrateRequiredLatestStatus
 annotate-snippets^0.11.40.12.16out of date
 anstream^0.6.151.0.0out of date
 anstyle^1.0.81.0.14up to date
 anyhow^1.0.861.0.104up to date
 base64^0.22.10.23.1out of date
 blake3^1.5.21.8.7up to date
 bytesize^1.32.7.0out of date
 cargo-credential^0.4.20.4.10up to date
 cargo-credential-libsecret^0.4.70.5.9out of date
 cargo-credential-macos-keychain^0.4.70.4.24up to date
 cargo-credential-wincred^0.4.70.4.24up to date
 cargo-platform^0.2.00.3.3out of date
 cargo-util^0.2.140.2.31up to date
 cargo-util-schemas^0.7.00.14.2out of date
 clap^4.5.204.6.7up to date
 clap_complete^4.5.354.6.11up to date
 color-print^0.3.60.3.7up to date
 crates-io^0.40.40.41.1out of date
 curl^0.4.460.4.50up to date
 curl-sys^0.4.730.4.90+curl-8.21.0up to date
 filetime^0.2.230.2.29up to date
 flate2^1.0.301.1.10up to date
 git2^0.19.00.21.0out of date
 git2-curl^0.20.00.22.0out of date
 gix^0.69.10.88.0out of date
 glob^0.3.10.3.4up to date
 hex^0.4.30.4.3up to date
 hmac^0.12.10.13.0out of date
 home^0.5.90.5.12up to date
 http-auth^0.1.90.1.10up to date
 humantime^2.1.02.4.0up to date
 ignore^0.4.220.4.33up to date
 im-rc^15.1.015.1.0up to date
 indexmap^2.2.62.14.2up to date
 itertools^0.13.00.15.0out of date
 jobserver^0.1.320.1.35up to date
 lazycell^1.3.01.3.0up to date
 libc^0.2.1550.2.189up to date
 libgit2-sys^0.17.00.18.8+1.9.7out of date
 memchr^2.7.42.8.3up to date
 opener^0.7.10.9.0out of date
 openssl ⚠️=0.10.570.10.81insecure
 os_info^3.8.23.15.0up to date
 pasetors^0.7.00.8.1out of date
 pathdiff^0.2.10.2.3up to date
 rand^0.8.50.10.3out of date
 regex^1.10.51.13.1up to date
 rusqlite^0.32.00.40.2out of date
 rustc-hash^2.0.02.1.3up to date
 rustc-stable-hash^0.1.10.1.2up to date
 rustfix^0.9.00.9.7up to date
 same-file^1.0.61.0.6up to date
 semver^1.0.231.0.28up to date
 serde^1.0.2041.0.229up to date
 serde-untagged^0.1.60.1.9up to date
 serde_ignored^0.1.100.1.14up to date
 serde_json^1.0.1201.0.151up to date
 sha1^0.10.60.11.0out of date
 shell-escape^0.1.50.1.5up to date
 supports-hyperlinks^3.0.03.2.0up to date
 supports-unicode^3.0.03.0.0up to date
 tar^0.4.420.4.46up to date
 tempfile^3.10.13.27.0up to date
 thiserror^1.0.632.0.21out of date
 time^0.3.360.3.55up to date
 toml^0.8.191.1.6+spec-1.1.0out of date
 toml_edit^0.22.200.25.15+spec-1.1.0out of date
 tracing^0.1.400.1.44up to date
 tracing-chrome^0.7.20.7.2up to date
 tracing-subscriber^0.3.180.3.23up to date
 unicase^2.7.02.9.0up to date
 unicode-width^0.2.00.2.2up to date
 url^2.5.22.5.8up to date
 walkdir^2.5.02.5.0up to date
 windows-sys^0.590.61.2out of date

Dev dependencies

(5 total, 4 outdated)

CrateRequiredLatestStatus
 annotate-snippets^0.11.40.12.16out of date
 cargo-test-support^0.7.00.11.4out of date
 gix^0.69.10.88.0out of date
 same-file^1.0.61.0.6up to date
 snapbox^0.6.201.2.2out of date

Security Vulnerabilities

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

openssl: Use-After-Free in `Md::fetch` and `Cipher::fetch`

RUSTSEC-2025-0022

When a Some(...) value was passed to the properties argument of either of these functions, a use-after-free would result.

In practice this would nearly always result in OpenSSL treating the properties as an empty string (due to CString::drop's behavior).

The maintainers thank quitbug for reporting this vulnerability to us.