CVE-2020-36318: rust-lang rust Double Free
CVSS: 9.8v3.1CriticalModified
AliasesUBUNTU-CVE-2020-36318DEBIAN-CVE-2020-36318
Published 11-04-2021Last modified 04-08-2024
Vulnerability summary
CVE-2020-36318 is a critical (CVSS 9.8) Double Free vulnerability in rust-lang rust. EPSS estimates a 1.68% chance of exploitation in the next 30 days, higher than 76.5% of scored vulnerabilities. 1 public exploit is recorded.
CVSS score
9.8/10
010
Critical · v3.1 (NVD)EPSS score
1.68%
0%100%
Low · 0.00 pp in 30 daysKEVNot listedIn no KEV catalog
RansomwareNone recordedNo known use recorded
Public exploits1github
Advisory lineage
Upstream 0 · Downstream 2Timeline
- 11-04-2021PublishedVulnerability first disclosed.
- 04-08-2024Last modifiedVulnerability information updated.
Description
In the standard library in Rust before 1.49.0, VecDeque::make_contiguous has a bug that pops the same element more than once under certain condition. This bug could result in a use-after-free or double free.
CVSS metrics
4 scores · 3 sources · 2 versionsCritical 9.8Preferred score · NVD (NIST)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HSourcesAll 3 agree
- OSV · UbuntuEcosystem advisory · calculated9.8CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- OSV · DebianEcosystem advisory · calculated9.8CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
High 7.5Preferred score · NVD (NIST)
AV:N/AC:L/Au:N/C:P/I:P/A:PSourcesSingle source
EPSS trend
Probability
1.68%
Chance of exploitation in the next 30 days
Percentile
77%
Versus all other CVEs
30-day change
0.00 pp
From 1.68% on 19-09-2026
19-09-202619-10-2026
EPSS score1.68%
Known exploited
Compare KEV catalogsNot in any of the 3 tracked catalogs.
Public exploits
1 foundRust
Maturity: poc
Weaknesses
CWE · root cause- CWE-415Double FreeThe product calls free() twice on the same memory address.
- CWE-416Use After FreeThe product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.
Affected systems
Debian1 product
- rustc< 1.53.0+dfsg1-1
Rust-lang1 product
- rust≥ 1.48.0, < 1.49.0
Ubuntu1 product
- rustcAll versions (No fix recorded)
3 vendors · 3 products
References
7 links- github.com/rust-lang/rust/issues/79808X Refsource MISCREPORTExploitIssue TrackingPatchThird Party Advisory