Rust advisories / reffers
Unsound MediumRUSTSEC-2020-0094 · reffers
RUSTSEC-2020-0094: Unsound: can make `ARefss` contain a !Send, !Sync object.
Short answerreffers has an API that can cause undefined behaviour from safe code: Unsound: can make `ARefss` contain a !Send, !Sync object.. Fixed in 0.6.1.
| Crate | reffers |
|---|---|
| Type | Unsound (memory-corruption, thread-safety) |
| Affected versions | Before 0.6.1. |
| Fixed in | 0.6.1 |
| Severity | Medium, CVSS 4.7 CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H |
| Published | 2020-12-01 |
| Last changed | 2023-11-08 |
| Also known as | CVE-2020-36203, GHSA-39xg-8p43-h76x |
What to do
- See which version you have:
cargo tree -i reffers(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p reffers. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for examplereffers = "0.6.1") or update the dependency that pulls it in. - Check again with
cargo audit, or paste your Cargo.lock into our Cargo.toml checker.
Details from the advisory
ARefss<'a, V> is a type that is assumed to contain objects that are Send + Sync.
In the affected versions of this crate, Send/Sync traits are unconditionally implemented for ARefss<'a, V>.
By using the ARefss::map() API, we can insert a !Send or !Sync object into ARefss<'a, V>. After that, it is possible to create a data race to the inner object of ARefss<'a, V>, which can lead to undefined behavior & memory corruption.
The flaw was corrected in commit 6dd7ca0 (https://github.com/diwic/reffers-rs/commit/6dd7ca0d50f2464df708975cdafcfaeeb6d41c66) by adding trait bound V: Send + Sync to ARefss::map() API.
References
- Package: crates.io/crates/reffers
- Advisory: rustsec.org/advisories/RUSTSEC-2020-0094.html
- Report: github.com/diwic/reffers-rs/issues/7
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Up next
Are you affected?Check your whole dependency treePaste Cargo.lock: every advisory, for your exact versions.Read it next →Also worth your time
Did this answer your question?