A flaw was found in libsolv, a dependency-resolution library used by RPM-based package managers such as dnf and zypper to work with .solv repository cache files. When libsolv rewrites a .solv cache file, it reads directory-id values from the file's compressed filelist data without validating that they fall within the expected range. A corrupted or specially crafted .solv cache file (for example, one left in a torn state after an unclean system shutdown) can cause an out-of-bounds memory write when a tool such as dnf, yum, or zypper next processes it. Successful exploitation is expected to result in a crash of the affected tool (denial of service); it is not expected to allow arbitrary code execution because the out-of-bounds write always stores a fixed, non-attacker-controlled value.
{
"binaries": [
{
"binary_version": "0.6.36-2",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.6.36-2",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.6.36-2",
"binary_name": "libsolv0"
},
{
"binary_version": "0.6.36-2",
"binary_name": "libsolvext0"
},
{
"binary_version": "0.6.36-2",
"binary_name": "python3-solv"
}
]
}{
"binaries": [
{
"binary_version": "0.7.20-1ubuntu0.22.04.1",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.7.20-1ubuntu0.22.04.1",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.7.20-1ubuntu0.22.04.1",
"binary_name": "libsolv1"
},
{
"binary_version": "0.7.20-1ubuntu0.22.04.1",
"binary_name": "libsolvext1"
},
{
"binary_version": "0.7.20-1ubuntu0.22.04.1",
"binary_name": "python3-solv"
}
]
}{
"binaries": [
{
"binary_version": "0.7.28-1build2",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.7.28-1build2",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.7.28-1build2",
"binary_name": "libsolv1"
},
{
"binary_version": "0.7.28-1build2",
"binary_name": "libsolvext1"
},
{
"binary_version": "0.7.28-1build2",
"binary_name": "python3-solv"
}
]
}{
"binaries": [
{
"binary_version": "0.7.35-1build1",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.7.35-1build1",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.7.35-1build1",
"binary_name": "libsolv1"
},
{
"binary_version": "0.7.35-1build1",
"binary_name": "libsolvext1"
},
{
"binary_version": "0.7.35-1build1",
"binary_name": "python3-solv"
}
]
}{
"binaries": [
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "libsolv0"
},
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "libsolvext0"
},
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "python-solv"
},
{
"binary_version": "0.6.11-1.1ubuntu0.1~esm1",
"binary_name": "python3-solv"
}
]
}{
"binaries": [
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "libsolv-perl"
},
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "libsolv-tools"
},
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "libsolv0"
},
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "libsolvext0"
},
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "python-solv"
},
{
"binary_version": "0.6.30-1ubuntu0.1~esm1",
"binary_name": "python3-solv"
}
]
}