{"id":"CVE-2019-15551","aliases":["DEBIAN-CVE-2019-15551","EUVD-2021-1803","GHSA-mm7v-vpv8-xfc3","RUSTSEC-2019-0009"],"status":"published","title":"Double free in smallvec","description":"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.","severity":{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-11","score":0.01862,"percentile":0.79532,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-415"],"published":"2019-06-06T12:00:00Z","modified":"2026-10-20T10:50:44Z","fixes":[{"ecosystem":"crates.io","package":"smallvec","fixed_in":["0.6.10"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"rust-smallvec","fixed_in":["0.6.10-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"rust-smallvec","fixed_in":["0.6.10-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"rust-smallvec","fixed_in":["0.6.10-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"smallvec","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.6.5"},{"fixed":"0.6.10"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"rust-smallvec","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.6.10-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"rust-smallvec","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.6.10-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"rust-smallvec","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.6.10-1"}]}]},{"source":"osv","ecosystem":"crates.io","package":"smallvec","ranges":[{"type":"SEMVER","events":[{"introduced":"0.6.5"},{"fixed":"0.6.10"}]}]},{"source":"osv","ecosystem":"crates.io","package":"smallvec","ranges":[{"type":"SEMVER","events":[{"introduced":"0.6.5"},{"fixed":"0.6.10"}]}]}],"products":[{"vendor":"servo","product":"smallvec"}],"references":[{"url":"https://rustsec.org/advisories/RUSTSEC-2019-0009.html","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/servo/rust-smallvec/issues/148","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2019-15551","tags":["advisory"]},{"url":"https://github.com/servo/rust-smallvec/issues/149","tags":["web"]},{"url":"https://github.com/servo/rust-smallvec/commit/c20cfa8584e649f00dc0767ab6fad63a3f59a296","tags":["web"]},{"url":"https://github.com/servo/rust-smallvec/commit/f96322b9243405cc82701cc73f1b19313b413ab4","tags":["web"]},{"url":"https://github.com/advisories/GHSA-mm7v-vpv8-xfc3"},{"url":"https://security-tracker.debian.org/tracker/CVE-2019-15551","tags":["advisory"]},{"url":"https://github.com/servo/rust-smallvec","tags":["package"]},{"url":"https://crates.io/crates/smallvec","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2019-15551","description":"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.","status":"published","published":"2019-08-26T14:39:09Z","modified":"2024-08-05T00:49:13.774Z","updated_at":"2026-11-02T14:20:21.703364Z"}],"euvd":[{"id":"EUVD-2021-1803","description":"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.","status":"published","published":"2019-08-26T14:39:09Z","modified":"2024-08-05T00:49:13Z","updated_at":"2026-11-03T02:40:35.584574Z"}],"ghsa":[{"id":"GHSA-mm7v-vpv8-xfc3","title":"Double free in smallvec","description":"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.","status":"published","published":"2021-08-25T20:44:59Z","modified":"2023-06-13T20:57:37Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-415"],"updated_at":"2026-11-02T14:36:54.225318Z"}],"nvd":[{"id":"CVE-2019-15551","description":"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.","status":"published","published":"2019-08-26T15:15:12Z","modified":"2026-06-17T02:20:37.053Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-415"],"updated_at":"2026-11-02T14:05:23.725587Z"}],"osv":[{"id":"CVE-2019-15551","description":"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.","status":"published","published":"2019-08-26T15:15:12Z","modified":"2026-11-11T02:45:06.564717899Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-11T02:50:43.46164Z"},{"id":"DEBIAN-CVE-2019-15551","description":"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.","status":"published","published":"2019-08-26T15:15:12Z","modified":"2026-09-21T07:01:34.525317505Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:31.867036Z"},{"id":"GHSA-mm7v-vpv8-xfc3","title":"Double free in smallvec","description":"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.","status":"published","published":"2021-08-25T20:44:59Z","modified":"2023-11-08T04:01:14.162214Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-415"],"updated_at":"2026-11-02T15:46:52.170928Z"},{"id":"RUSTSEC-2019-0009","title":"Double-free and use-after-free in SmallVec::grow()","description":"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.\n\nAn attacker that controls the value passed to `grow` may exploit this flaw to obtain memory contents or gain remote code execution.\n\nCredits to [@ehuss](https://github.com/ehuss) for discovering, reporting and fixing the bug.","status":"published","published":"2019-06-06T12:00:00Z","modified":"2026-07-17T16:00:03.204193636Z","cvss":[{"version":"3.0","score":9.8,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:53:39.492624Z"}]}}
