high8.1
CVE-2020-36435
Data race in ruspiro-singleton
Impact
`Singleton<T>` is meant to be a static object that can be initialized lazily. In order to satisfy the requirement that `static` items must implement `Sync`, `Singleton` implemented both `Sync` and `Send` unconditionally. This allows for a bug where non-`Sync` types such as `Cell` can be used in singletons and cause data races in concurrent programs. The flaw was corrected in commit `b0d2bd20e` by adding trait bounds, requiring the contaiend type to implement `Sync`.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| rust | ruspiro-singleton | < 0.4.1 | 0.4.1 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Ruspiro-Singleton Project | Ruspiro-Singleton | before 0.4.1 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/ruspiro-singleton/RUSTSEC-2020-0115.md
- https://rustsec.org/advisories/RUSTSEC-2020-0115.html
- https://github.com/advisories/GHSA-fqq2-xp7m-xvm8
- https://nvd.nist.gov/vuln/detail/CVE-2020-36435
- https://github.com/RusPiRo/ruspiro-singleton/pull/11
- https://github.com/RusPiRo/ruspiro-singleton/issues/10
- https://github.com/RusPiRo/ruspiro-singleton/commit/b0d2bd20eb40b9cbc2958b981ba2dcd9e6f9396e