6lowpan: fix off-by-one in multicast context address compression
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.94, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: 6lowpan: fix off-by-one in multicast context address compression The second memcpy in lowpan_iphc_mcast_ctx_addr_compress() uses &data[1] as destination and &ipaddr->s6_addr[11] as source, but both should be offset by one: &data[2] and &ipaddr->s6_addr[12] respectively. This off-by-one has two consequences: 1. data[1] is overwritten with s6_addr[11], corrupting the RIID field in the compressed multicast address 2. data[5] is never written, so uninitialized kernel stack memory is transmitted over the network via lowpan_push_hc_data(), leaking kernel stack contents The correct inline data layout must match what the decompression function lowpan_uncompress_multicast_ctx_daddr() expects: data[0..1] = s6_addr[1..2] (flags/scope + RIID) data[2..5] = s6_addr[12..15] (group ID) Also zero-initialize the data array as a defensive measure against similar bugs in the future.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in f24a58c72a45f4c109f3557a760cc4b60b7a6037; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in da8cbb64b47e9066b40af0de170901caf17b768c; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in 4485d79617520d84ba5a14515e2b5136007d6deb; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in 06ce6fc106b16dec9b535950db626261be865e5b; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in dcb1bec1c32ee5c3878354e087cf5dbee2b7c7af; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in c32f30ef5e66adbfa102348e2e8a23776eb007cb; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in da8808463882c3f3c357b072e25053c2121f1419; From 5609c185f24dffca5f6a9c127106869da150be03 · fixed in 2a58899d11009bffc7b4b32a571858f381121837
- Linux Linux
4.6
- KernelLinux
From 4.6.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.143; From 6.7.0 · fixed in 6.12.94; From 6.13.0 · fixed in 6.18.36; From 6.19.0 · fixed in 7.0.13
References 8
git.kernel.org
- stable/c/f24a58c72a45f4c109f3557a760cc4b60b7a6037
- stable/c/da8cbb64b47e9066b40af0de170901caf17b768c
- stable/c/4485d79617520d84ba5a14515e2b5136007d6deb
- stable/c/06ce6fc106b16dec9b535950db626261be865e5b
- stable/c/dcb1bec1c32ee5c3878354e087cf5dbee2b7c7af
- stable/c/c32f30ef5e66adbfa102348e2e8a23776eb007cb
- stable/c/da8808463882c3f3c357b072e25053c2121f1419
- stable/c/2a58899d11009bffc7b4b32a571858f381121837