In systemd through 233, certain sizes passed to dnspacketnew in systemd-resolved can cause it to allocate a buffer that's too small. A malicious DNS server can exploit this via a response with a specially crafted TCP payload to trick systemd-resolved into allocating a buffer that's too small, and subsequently write arbitrary data beyond the end of it.
{
"availability": "No subscription required",
"binaries": [
{
"binary_version": "229-4ubuntu19",
"binary_name": "libnss-myhostname"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libnss-mymachines"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libnss-resolve"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libpam-systemd"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libsystemd-dev"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libsystemd0"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libudev-dev"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "libudev1"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "systemd"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "systemd-container"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "systemd-coredump"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "systemd-journal-remote"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "systemd-sysv"
},
{
"binary_version": "229-4ubuntu19",
"binary_name": "udev"
}
]
}