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 mongodb

Dependencies

(60 total, 14 outdated, 4 possibly insecure)

CrateRequiredLatestStatus
 aws-config^11.8.17up to date
 aws-credential-types^1.2.41.2.14up to date
 aws-sigv4^1.3.31.4.4up to date
 base64^0.220.22.1up to date
 bitflags^22.11.1up to date
 bson^3.1.03.1.0up to date
 chrono^0.4.320.4.44up to date
 cross-krb5^0.4.20.4.2up to date
 derive-where^1.2.71.6.1up to date
 derive_more^22.1.1up to date
 fast-socks5^0.101.0.0out of date
 flate2^1.01.1.9up to date
 futures-core^0.3.140.3.32up to date
 futures-io^0.3.210.3.32up to date
 futures-util^0.3.140.3.32up to date
 hex^0.4.00.4.3up to date
 hickory-net ⚠️^0.260.26.1maybe insecure
 hickory-proto ⚠️^0.260.26.1maybe insecure
 hickory-resolver^0.260.26.1up to date
 hmac^0.12.10.13.0out of date
 http^1.31.4.1up to date
 log^0.4.170.4.30up to date
 macro_magic^0.5.10.6.0out of date
 md-5^0.10.10.11.0out of date
 mongocrypt^0.3.20.3.2up to date
 mongodb-internal-macros^3.7.03.7.0up to date
 num_cpus^1.13.11.17.0up to date
 openssl ⚠️^0.10.380.10.80maybe insecure
 openssl-probe^0.1.50.2.1out of date
 opentelemetry^0.31.00.32.0out of date
 pbkdf2^0.12.00.13.0out of date
 pem^3.0.43.0.6up to date
 percent-encoding^2.0.02.3.2up to date
 pkcs8^0.10.20.11.0out of date
 rand^0.90.10.1out of date
 rayon^1.5.31.12.0up to date
 reqwest^0.12.120.13.4out of date
 rustc_version_runtime^0.3.00.3.0up to date
 rustls^0.23.200.23.40up to date
 serde^1.0.1251.0.228up to date
 serde_bytes^0.11.50.11.19up to date
 serde_with^3.8.13.20.0up to date
 sha1^0.10.00.11.0out of date
 sha2^0.10.20.11.0out of date
 snap^1.0.51.1.1up to date
 socket2^0.60.6.4up to date
 stringprep^0.1.20.1.5up to date
 strsim^0.11.10.11.1up to date
 take_mut^0.2.20.2.2up to date
 thiserror^22.0.18up to date
 tokio ⚠️^1.17.01.52.3maybe insecure
 tokio-openssl^0.6.30.6.5up to date
 tokio-rustls^0.260.26.4up to date
 tokio-util^0.7.00.7.18up to date
 tracing^0.1.360.1.44up to date
 typed-builder^0.22.00.23.2out of date
 uuid^1.1.21.23.2up to date
 webpki-roots^11.0.7up to date
 windows-sys^0.600.61.2out of date
 zstd^0.13.30.13.3up to date

Dev dependencies

(22 total, 5 outdated, 2 possibly insecure)

CrateRequiredLatestStatus
 anyhow^1.01.0.102up to date
 approx^0.5.10.5.1up to date
 backtrace^0.3.680.3.76up to date
 bson^3.0.03.1.0up to date
 chrono^0.4.320.4.44up to date
 function_name^0.2.10.3.0out of date
 futures^0.30.3.32up to date
 hex^0.40.4.3up to date
 home^0.50.5.12up to date
 lambda_runtime^0.6.01.2.1out of date
 opentelemetry_sdk^0.31.00.32.1out of date
 pkcs8^0.10.20.11.0out of date
 pretty_assertions^1.3.01.4.1up to date
 regex^1.6.01.12.3up to date
 reqwest^0.12.20.13.4out of date
 semver^1.0.01.0.28up to date
 serde>=0.0.01.0.228up to date
 serde-hex^0.1.00.1.0up to date
 serde_json^1.0.641.0.150up to date
 serde_path_to_error^0.10.1.20up to date
 time ⚠️^0.3.90.3.47maybe insecure
 tokio ⚠️>=0.0.01.52.3maybe insecure

Security Vulnerabilities

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

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.

time: Denial of Service via Stack Exhaustion

RUSTSEC-2026-0009

Impact

When user-provided input is provided to any type that parses with the RFC 2822 format, a denial of service attack via stack exhaustion is possible. The attack relies on formally deprecated and rarely-used features that are part of the RFC 2822 format used in a malicious manner. Ordinary, non-malicious input will never encounter this scenario.

Patches

A limit to the depth of recursion was added in v0.3.47. From this version, an error will be returned rather than exhausting the stack.

Workarounds

Limiting the length of user input is the simplest way to avoid stack exhaustion, as the amount of the stack consumed would be at most a factor of the length of the input.

hickory-proto: CPU exhaustion during message encoding due to O(n²) name compression

RUSTSEC-2026-0119

During message encoding, hickory-proto's BinEncoder stores pointers to labels that are candidates for name compression in a Vec<(usize, Vec<u8>)>. The name compression logic then searches for matches with a linear scan.

A malicious message with many records can both introduce many candidate labels, and invoke this linear scan many times. This can amplify CPU exhaustion in DoS attacks.

This is similar to CVE-2024-8508.

We recommend all affected users update to hickory-proto 0.26.1 for the fix.

hickory-net: NSEC3 closest-encloser proof validation enters unbounded loop on cross-zone responses

RUSTSEC-2026-0120

The NSEC3 closest-encloser proof validation in hickory-net's DnssecDnsHandle walks from the QNAME up to the SOA owner name, building a list of candidate encloser names. The iterator used assumes the QNAME is a descendant of the SOA owner, terminating only when the current candidate equals the SOA name. When the SOA in a response's authority section is not an ancestor of the QNAME, the loop stalls at the DNS root and never terminates, repeatedly calling Name::base_name() and pushing newly allocated Name and hashed-name entries into the candidate Vec.

The bug is reachable by any caller of DnssecDnsHandle — including the resolver, recursor, and client — when built with the dnssec-ring or dnssec-aws-lc-rs feature and configured to perform DNSSEC validation. It is triggered while validating a NoData or NXDomain response whose authority section contains an SOA record from a zone other than an ancestor of the QNAME, on a code path that requires NSEC3 closest-encloser proof. In practice this can be reached through an insecure CNAME chain that crosses zone boundaries into a DNSSEC-signed zone returning NoData, but the minimum condition is just a mismatched SOA owner on a response requiring NSEC3 validation.

A debug_assert_ne!(name, Name::root()) guards the loop body, so debug builds abort with a panic on the first iteration past the root. Release builds compile the assertion out and run the loop unbounded, allocating until the process exhausts available memory (OOM). A reachable upstream attacker who can return such a response can therefore crash a debug-built validator or exhaust memory on a release-built one.

We recommend all affected users update to hickory-net 0.26.1 for the fix.