Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update rust crate cargo to 0.86.0 #163

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

chore(deps): update rust crate cargo to 0.86.0

5376e4e
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Open

chore(deps): update rust crate cargo to 0.86.0 #163

chore(deps): update rust crate cargo to 0.86.0
5376e4e
Select commit
Loading
Failed to load commit list.
GitHub Actions / Security audit failed Feb 20, 2025 in 0s

Security advisories found

2 advisory(ies), 1 other

Details

Vulnerabilities

RUSTSEC-2024-0357

MemBio::get_buf has undefined behavior with empty buffers

Details
Package openssl
Version 0.10.57
URL sfackler/rust-openssl#2266
Date 2024-07-21
Patched versions >=0.10.66

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.

RUSTSEC-2025-0004

ssl::select_next_proto use after free

Details
Package openssl
Version 0.10.57
URL GHSA-rpmj-rpgj-qmpm
Date 2025-02-02
Patched versions >=0.10.70

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