Description
In the Linux kernel, the following vulnerability has been resolved: Input: evdev - zero absinfo before partial copy in EVIOCSABS The EVIOCSABS handler copies at most the user supplied ioctl size into an uninitialized on-stack struct input_absinfo: if (copy_from_user(&abs, p, min_t(size_t, size, sizeof(struct input_absinfo)))) The size comes from _IOC_SIZE() of the ioctl command and is therefore fully controlled by userspace. A short size leaves the trailing part of the structure holding whatever was on the kernel stack, and the whole structure is then stored into the device: dev->absinfo[t] = abs; EVIOCGABS hands that back to userspace, disclosing the stale stack bytes. Only the resolution field is currently cleared, which covers the legacy struct layout but not an arbitrarily short size. Zero the structure before the copy so any part not supplied by the caller reads back as zero. The existing resolution fixup is kept, since it also handles a size that partially overlaps that field.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < c0aebb57b73c7d06ad21731099afe119b113c403affected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < 89b6ffa4bc10c436fa9aecc73be105124cd58a35affected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < e834e134a32b6a5c600fa539bb49146f617743abaffected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < af5f7130cbf39e6e12336d0b7a5f6e76e4e1526baffected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < 30b853a3d71f16bd0aa66b604bc37dd1254a19b3affected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < 71e5619db11dd6429101bd967230d0321ec5ea26affected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < 3dfe48d5307a1ba22c58231d04257737015569caaffected448cd1664a573e69f54bfd32f3bb7220212b6cf5 to < 8b852965b8eaf910c314dc346967ed82c8d4f235affected
Linux Linux
Default version status: affected
2.6.36affected0 to < 2.6.36unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.54 to ≤ 6.18.*unaffected7.2.8 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c0aebb57b73c7d06ad21731099afe119b113c403 ↗
- https://git.kernel.org/stable/c/89b6ffa4bc10c436fa9aecc73be105124cd58a35 ↗
- https://git.kernel.org/stable/c/e834e134a32b6a5c600fa539bb49146f617743ab ↗
- https://git.kernel.org/stable/c/af5f7130cbf39e6e12336d0b7a5f6e76e4e1526b ↗
- https://git.kernel.org/stable/c/30b853a3d71f16bd0aa66b604bc37dd1254a19b3 ↗
- https://git.kernel.org/stable/c/71e5619db11dd6429101bd967230d0321ec5ea26 ↗
- https://git.kernel.org/stable/c/3dfe48d5307a1ba22c58231d04257737015569ca ↗
- https://git.kernel.org/stable/c/8b852965b8eaf910c314dc346967ed82c8d4f235 ↗