zip is a zip library for Rust that supports reading and writing simple ZIP files. From 1.3.0 until 9.0.0, ZipArchive::extract in src/read/mod.rs calls Vec::with_capacity for a symbolic link target using the attacker-controlled ZIP64 uncompressed_size before reading entry data. A small archive can request an impossible capacity, causing the infallible allocation path to abort the process before the entry is validated. The failure cannot be contained with catch_unwind or a worker thread, allowing repeated denial of service in archive-processing applications. This issue is fixed in version 9.0.0.
{
"binaries": [
{
"binary_name": "librust-zip+bzip2-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+default-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+deflate-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+deflate-miniz-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+deflate-zlib-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+flate2-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip+time-dev",
"binary_version": "0.5.3-2"
},
{
"binary_name": "librust-zip-dev",
"binary_version": "0.5.3-2"
}
]
}
{
"binaries": [
{
"binary_name": "librust-zip+bzip2-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+default-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+deflate-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+deflate-miniz-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+deflate-zlib-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+flate2-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip+time-dev",
"binary_version": "0.5.13-1"
},
{
"binary_name": "librust-zip-dev",
"binary_version": "0.5.13-1"
}
]
}