{"id":"RUSTSEC-2019-0010","summary":"MultiDecoder::read() drops uninitialized memory of arbitrary type on panic in client code","details":"Affected versions of libflate have set a field of an internal structure with a generic type to an uninitialized value in `MultiDecoder::read()` and reverted it to the original value after the function completed. However, execution of `MultiDecoder::read()` could be interrupted by a panic in caller-supplied `Read` implementation. This would cause `drop()` to be called on uninitialized memory of a generic type implementing `Read`.\n\nThis is equivalent to a use-after-free vulnerability and could allow an attacker to gain arbitrary code execution.\n\nThe flaw was corrected by aborting immediately instead of unwinding the stack in case of panic within `MultiDecoder::read()`. The issue was discovered and fixed by Shnatsel.","aliases":["CVE-2019-15552","GHSA-rpcm-whqc-jfw8"],"modified":"2023-11-08T04:01:14.223693Z","published":"2019-07-04T12:00:00Z","database_specific":{"license":"CC0-1.0"},"references":[{"type":"PACKAGE","url":"https://crates.io/crates/libflate"},{"type":"ADVISORY","url":"https://rustsec.org/advisories/RUSTSEC-2019-0010.html"},{"type":"REPORT","url":"https://github.com/sile/libflate/issues/35"}],"affected":[{"package":{"name":"libflate","ecosystem":"crates.io","purl":"pkg:cargo/libflate"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.1.14"},{"fixed":"0.1.25"}]}],"ecosystem_specific":{"affects":{"os":[],"functions":["libflate::gzip::MultiDecoder::read"],"arch":[]},"affected_functions":null},"database_specific":{"cvss":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","informational":null,"categories":[],"source":"https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2019-0010.json"}}],"schema_version":"1.7.3","severity":[{"type":"CVSS_V3","score":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}