Input: evdev - zero absinfo before partial copy in EVIOCSABS
- 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.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, 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: 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.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in c0aebb57b73c7d06ad21731099afe119b113c403; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in 89b6ffa4bc10c436fa9aecc73be105124cd58a35; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in e834e134a32b6a5c600fa539bb49146f617743ab; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in af5f7130cbf39e6e12336d0b7a5f6e76e4e1526b; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in 30b853a3d71f16bd0aa66b604bc37dd1254a19b3; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in 71e5619db11dd6429101bd967230d0321ec5ea26; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in 3dfe48d5307a1ba22c58231d04257737015569ca; From 448cd1664a573e69f54bfd32f3bb7220212b6cf5 · fixed in 8b852965b8eaf910c314dc346967ed82c8d4f235
- Linux Linux
2.6.36
- KernelLinux
From 2.6.36 · fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.54; From 6.19.0 · fixed in 7.2.8
References 8
git.kernel.org
- stable/c/c0aebb57b73c7d06ad21731099afe119b113c403
- stable/c/89b6ffa4bc10c436fa9aecc73be105124cd58a35
- stable/c/e834e134a32b6a5c600fa539bb49146f617743ab
- stable/c/af5f7130cbf39e6e12336d0b7a5f6e76e4e1526b
- stable/c/30b853a3d71f16bd0aa66b604bc37dd1254a19b3
- stable/c/71e5619db11dd6429101bd967230d0321ec5ea26
- stable/c/3dfe48d5307a1ba22c58231d04257737015569ca
- stable/c/8b852965b8eaf910c314dc346967ed82c8d4f235