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 cargo-fetcher

Dependencies

(32 total, 11 outdated, 3 possibly insecure)

CrateRequiredLatestStatus
 anyhow^1.01.0.97up to date
 async-scoped^0.70.9.0out of date
 async-trait^0.10.1.87up to date
 base64^0.210.22.1out of date
 bytes^1.01.10.1up to date
 camino^1.11.1.9up to date
 clap^4.04.5.32up to date
 crossbeam-channel^0.50.5.14up to date
 flate2^1.01.1.0up to date
 home^0.50.5.11up to date
 http^0.21.2.0out of date
 rayon^1.51.10.0up to date
 remove_dir_all^0.81.0.0out of date
 reqwest^0.110.12.12out of date
 ring ⚠️^0.170.17.13maybe insecure
 rusty-s3^0.50.7.0out of date
 serde^1.01.0.219up to date
 quick-xml^0.300.37.2out of date
 tame-gcs^0.120.13.0out of date
 tame-index^0.80.18.1out of date
 tame-oauth^0.90.10.0out of date
 tar ⚠️^0.40.4.44maybe insecure
 tempfile^3.13.18.0up to date
 time^0.30.3.39up to date
 toml^0.80.8.20up to date
 tracing^0.10.1.41up to date
 tracing-subscriber^0.30.3.19up to date
 url^2.22.5.4up to date
 walkdir^2.32.5.0up to date
 zstd^0.130.13.3up to date
 gix^0.550.70.0out of date
 tokio ⚠️^1.41.44.0maybe insecure

Dev dependencies

(3 total, 1 outdated)

CrateRequiredLatestStatus
 similar-asserts^1.21.7.0up to date
 twox-hash^1.62.1.0out of date
 walkdir^2.32.5.0up to date

Security Vulnerabilities

tar: Links in archive can create arbitrary directories

RUSTSEC-2021-0080

When unpacking a tarball that contains a symlink the tar crate may create directories outside of the directory it's supposed to unpack into.

The function errors when it's trying to create a file, but the folders are already created at this point.

use std::{io, io::Result};
use tar::{Archive, Builder, EntryType, Header};

fn main() -> Result<()> {
    let mut buf = Vec::new();

    {
        let mut builder = Builder::new(&mut buf);

        // symlink: parent -> ..
        let mut header = Header::new_gnu();
        header.set_path("symlink")?;
        header.set_link_name("..")?;
        header.set_entry_type(EntryType::Symlink);
        header.set_size(0);
        header.set_cksum();
        builder.append(&header, io::empty())?;

        // file: symlink/exploit/foo/bar
        let mut header = Header::new_gnu();
        header.set_path("symlink/exploit/foo/bar")?;
        header.set_size(0);
        header.set_cksum();
        builder.append(&header, io::empty())?;

        builder.finish()?;
    };

    Archive::new(&*buf).unpack("demo")
}

This has been fixed in https://github.com/alexcrichton/tar-rs/pull/259 and is published as tar 0.4.36. Thanks to Martin Michaelis (@mgjm) for discovering and reporting this, and Nikhil Benesch (@benesch) for the fix!

tokio: reject_remote_clients Configuration corruption

RUSTSEC-2023-0001

On Windows, configuring a named pipe server with pipe_mode will force ServerOptions::reject_remote_clients as false.

This drops any intended explicit configuration for the reject_remote_clients that may have been set as true previously.

The default setting of reject_remote_clients is normally true meaning the default is also overridden as false.

Workarounds

Ensure that pipe_mode is set first after initializing a ServerOptions. For example:

let mut opts = ServerOptions::new();
opts.pipe_mode(PipeMode::Message);
opts.reject_remote_clients(true);

ring: Some AES functions may panic when overflow checking is enabled.

RUSTSEC-2025-0009

ring::aead::quic::HeaderProtectionKey::new_mask() may panic when overflow checking is enabled. In the QUIC protocol, an attacker can induce this panic by sending a specially-crafted packet. Even unintentionally it is likely to occur in 1 out of every 2**32 packets sent and/or received.

On 64-bit targets operations using ring::aead::{AES_128_GCM, AES_256_GCM} may panic when overflow checking is enabled, when encrypting/decrypting approximately 68,719,476,700 bytes (about 64 gigabytes) of data in a single chunk. Protocols like TLS and SSH are not affected by this because those protocols break large amounts of data into small chunks. Similarly, most applications will not attempt to encrypt/decrypt 64GB of data in one chunk.

Overflow checking is not enabled in release mode by default, but RUSTFLAGS="-C overflow-checks" or overflow-checks = true in the Cargo.toml profile can override this. Overflow checking is usually enabled by default in debug mode.