RUSTSEC-2019-0010

    Dashboard / Vulnerabilities / RUSTSEC-2019-0010

    RUSTSEC-2019-0010

    Published: 4 Jul 2019Last Modified: 8 Nov 2023

    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`. This is equivalent to a use-after-free vulnerability and could allow an attacker to gain arbitrary code execution. The 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.

    Affected packages

    Package

    Name: libflate

    Purl: pkg:cargo/libflate

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0.1.14
    Fixed -0.1.25

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High