PCI/sysfs: Add lockdown checks to legacy I/O and memory handlers
- 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 6.18.57, 7.2.6
- 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: PCI/sysfs: Add lockdown checks to legacy I/O and memory handlers Currently, the legacy I/O and memory sysfs handlers do not check security_locked_down(LOCKDOWN_PCI_ACCESS), leaving the legacy_io and legacy_mem files unprotected when the kernel is locked down. Commit eb627e17727e ("PCI: Lock down BAR access when the kernel is locked down") added the check to pci_write_config(), pci_mmap_resource(), and pci_write_resource_io() to prevent userspace from programming DMA-capable hardware that could be used to modify kernel code, but did not cover the legacy handlers. As a result, root can still write arbitrary I/O ports and map the legacy I/O and memory spaces while the kernel is locked down, which is the same capability the lockdown is meant to remove. Add the same check to pci_write_legacy_io(), pci_mmap_legacy_mem(), and pci_mmap_legacy_io(). These generic handlers cover both architectures that define HAVE_PCI_LEGACY (such as Alpha and PowerPC). [bhelgaas: add Link]
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From eb627e17727ebeede70697ae1798688b0d328b54 · fixed in 3556caa31a2bfbc22c11b812fd4ed8851c2d7bff; From eb627e17727ebeede70697ae1798688b0d328b54 · fixed in cd07aef510ac6a2873e01f9ddddc5492490b0067; From eb627e17727ebeede70697ae1798688b0d328b54 · fixed in 747b9bbbbdfdee51aee2456388f9b94b5086de4d
- Linux Linux
5.4
- KernelLinux
From 5.4.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.2.6