CVE-2019-15551
Double free in smallvec
CVE-2019-15551 is a critical vulnerability (CVSS 9.8) in Servo Smallvec, published June 6, 2019. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.86%, the 79th percentile. Fixed in smallvec 0.6.10.
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
- Record
CVE-2019-15551- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-415
- Updated
- 2026-11-02
CVE List No score
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
- Record
CVE-2019-15551- Updated
- 2026-11-02
EUVDEUVD-2021-1803 No score
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
- Record
EUVD-2021-1803- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-mm7v-vpv8-xfc3
9.8
Double free in smallvec
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution.
- Record
GHSA-mm7v-vpv8-xfc3- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-415
- Updated
- 2026-11-02
OSV
9.8
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
- Record
CVE-2019-15551- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2019-15551
9.8
An issue was discovered in the smallvec crate before 0.6.10 for Rust. There is a double free for certain grow attempts with the current capacity.
- Record
DEBIAN-CVE-2019-15551- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-mm7v-vpv8-xfc3
9.8
Double free in smallvec
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents. An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution.
- Record
GHSA-mm7v-vpv8-xfc3- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-415
- Updated
- 2026-11-02
OSVRUSTSEC-2019-0009
9.8
Double-free and use-after-free in SmallVec::grow()
Attempting to call grow on a spilled SmallVec with a value equal to the current capacity causes it to free the existing data. This performs a double free immediately and may lead to use-after-free on subsequent accesses to the SmallVec contents.
An attacker that controls the value passed to grow may exploit this flaw to obtain memory contents or gain remote code execution.
Credits to @ehuss for discovering, reporting and fixing the bug.
- Record
RUSTSEC-2019-0009- CVSS 3.0
- 9.8 Critical
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
smallveccrates.io |
0.6.5 up to 0.6.10 | 0.6.10 |
rust-smallvecDebian:12 |
before 0.6.10-1 | 0.6.10-1 |
rust-smallvecDebian:13 |
before 0.6.10-1 | 0.6.10-1 |
rust-smallvecDebian:14 |
before 0.6.10-1 | 0.6.10-1 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-03 | aliases | EUVD |
| 2026-11-02 | created | CVE List, GitHub Advisories, NVD, OSV |
References
rustsec.org/advisories/RUSTSEC-2019-0009.html
github.com/servo/rust-smallvec/issues/148
nvd.nist.gov/vuln/detail/CVE-2019-15551
github.com/servo/rust-smallvec/issues/149
github.com/servo/rust-smallvec/commit/c20cfa8584e649f00dc0767ab6fad63a3f59a296
github.com/servo/rust-smallvec/commit/f96322b9243405cc82701cc73f1b19313b413ab4