CVE-2023-54095
Description
A slab-out-of-bounds read vulnerability was found in the Linux kernel's PowerPC IOMMU code. The fail_iommu_setup() function registers the same notifier_block structure to both PCI and VIO buses. Since notifier_block is a linked list node, this causes notifiers registered to one bus type to also apply to the other. The VGA arbiter code then incorrectly processes VIO devices as PCI devices, causing an out-of-bounds memory access.
Statement
This flaw affects only PowerPC systems with both PCI and VIO buses, typically IBM POWER servers running with IOMMU fail injection enabled. The out-of-bounds read occurs during device registration at boot time. Most PowerPC systems in production do not enable fail_iommu, limiting the practical impact.
Common Vulnerability Scoring System (CVSS) Score Details
Info alert:Important note
CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).
CVSS v3 Score Breakdown
| Red Hat | NVD | cve.org | |
|---|---|---|---|
| Base Score | 5.5 | N/A | 7 |
| Attack Vector | Local | N/A | Local |
| Attack Complexity | Low | N/A | High |
| Privileges Required | Low | N/A | Low |
| User Interaction | None | N/A | None |
| Scope | Unchanged | N/A | Unchanged |
| Confidentiality | None | N/A | High |
| Integrity Impact | None | N/A | High |
| Availability Impact | High | N/A | High |
Vector
Red Hat: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
cve.org: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Understanding the Weakness (CWE)
Availability,Integrity,Confidentiality
Technical Impact: Read Memory; Modify Memory; Execute Unauthorized Code or Commands; DoS: Crash, Exit, or Restart
When a memory buffer is accessed using the wrong type, it could read or write memory out of the bounds of the buffer, if the allocated buffer is smaller than the type that the code is attempting to access, leading to a crash and possibly code execution.
Frequently Asked Questions
Not sure what something means? Check out our Security Glossary.
Want to get errata notifications? Sign up here.