fix(security): Update Rust crate rand to 0.9.3 [SECURITY] - #22
Open
vxfemboy wants to merge 1 commit into
Open
Conversation
vxfemboy
force-pushed
the
renovate/crate-rand-vulnerability
branch
from
July 29, 2026 02:56
4c88503 to
52624d4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.9.0→0.9.3Rand is unsound with a custom logger using rand::rng()
GHSA-cq8v-f236-94qc / RUSTSEC-2026-0097
More information
Details
It has been reported (by @lopopolo) that the
randlibrary is unsound (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:logandthread_rngfeatures are enabledrand::rng()(previouslyrand::thread_rng()) and calls anyTryRng(previouslyRngCore) methods onThreadRngThreadRng(attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)getrandomcrate) is unable to provide a new seedTryRng(previouslyRngCore) methods forThreadRnguseunsafecode to cast*mut BlockRng<ReseedingCore>to&mut BlockRng<ReseedingCore>. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of aliased mutable references is Undefined Behaviour, the behaviour of optimized builds is hard to predict.Severity
Low
References
logrust-random/rand#1763This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Rand is unsound with a custom logger using
rand::rng()GHSA-cq8v-f236-94qc / RUSTSEC-2026-0097
More information
Details
It has been reported (by @lopopolo) that the
randlibrary is unsound (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:logandthread_rngfeatures are enabledrand::rng()(previouslyrand::thread_rng()) and calls anyTryRng(previouslyRngCore) methods onThreadRngThreadRng(attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)getrandomcrate) is unable to provide a new seedTryRng(previouslyRngCore) methods forThreadRnguseunsafecode to cast*mut BlockRng<ReseedingCore>to&mut BlockRng<ReseedingCore>. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of aliased mutable references is Undefined Behaviour, the behaviour of optimized builds is hard to predict.Severity
Unknown
References
logrust-random/rand#1763This data is provided by OSV and the Rust Advisory Database (CC0 1.0).
Release Notes
rust-random/rand (rand)
v0.9.3Compare Source
This release back-ports a fix from v0.10. See also [#1763].
Changes
log(#1764)doc_auto_cfg(#1764)Full Changelog: rust-random/rand@0.9.2...0.9.3
v0.9.2Compare Source
Deprecated
rand::rngs::mockmodule andStepRnggenerator ([#1634])Additions
WeightedIndex<usize>(de)serialization ([#1646])v0.9.1Compare Source
Security and unsafe
zerocopydependency fromrand(#1579)Fixes
simd_supportfor recent nightly rust (#1586)Changes
fn rand::seq::index::sample_weightedandfn IndexedRandom::choose_multiple_weightedto return fewer thanamountresults (#1623), reverting an undocumented change ([#1382]) to the previous release.Additions
rand::distr::Alphabeticdistribution. (#1587)rand_core(#1604)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.