In the Linux kernel, the following vulnerability has been resolved:
accel: ethosu: Ensure SRAM region size matches job
It is possible for userspace to set the job SRAM size to 0, but then still
have SRAM accesses in the command stream. When the job SRAM size is 0,
setting the region base register is skipped and a stale base address from
a prior job is used.
Check the region size against the job's SRAM size instead of just the size
of the SRAM. The job's SRAM size was already checked against the total SRAM
size.
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 7.8
AV:L - The malformed input is a DRM_IOCTL_ETHOSU_SUBMIT job (sram_size=0, no region-2 BO handle) plus a command stream that uses region 2. A local process sends it through the /dev/accel/accelN ioctl into ethosu_ioctl_submit_job(). No remote protocol carries this data.
AC:L - The attacker sets the stale BASEP(2) value themselves: a prior job of their own binds a BO to region 2 while sram_size is 0, then they free that BO. Their next job skips the base write in ethosu_job_hw_submit(). Both steps are ordinary submissions they control, and there is no race.
PR:L - All ethosu ioctls, including SUBMIT, are registered with flags 0, so any unprivileged user allowed to open the accel device node (for example, the render group) can reach the flawed region-size check. Root is not required.
UI:N - The attacker's own ioctl calls on their own BOs and command streams trigger the bug. No other user has to do anything.
S:U - The NPU is driven by the same kernel, and no IOMMU or VM boundary is crossed (the driver sets only a 40-bit DMA mask). The impact stays within the kernel's own security authority.
C:H - The NPU reads through a stale BASEP(2): a freed BO's physical address, or SRAM holding another client's data. The command stream can copy up to sram_size bytes from there into an attacker BO, disclosing kernel pages or other users' data.
I:H - NPU output operations can write through the stale region-2 base into pages that were freed and reused by the kernel, or into another client's buffer. This is a DMA use-after-free write that the attacker sizes, and it can corrupt kernel memory.
A:H - Uncontrolled DMA writes into reused kernel pages, or into a stale or reset base address, can corrupt kernel data structures, crash the system, or hang the NPU. The attacker can repeat this at will.
| Attack Vector |
Local |
Scope |
Unchanged |
| Attack Complexity |
Low |
Confidentiality Impact |
High |
| Privileges Required |
Low |
Integrity Impact |
High |
| User Interaction |
None |
Availability Impact |
High |
AV:L - The malformed input is a DRM_IOCTL_ETHOSU_SUBMIT job (sram_size=0, no region-2 BO handle) plus a command stream that uses region 2. A local process sends it through the /dev/accel/accelN ioctl into ethosu_ioctl_submit_job(). No remote protocol carries this data.
AC:L - The attacker sets the stale BASEP(2) value themselves: a prior job of their own binds a BO to region 2 while sram_size is 0, then they free that BO. Their next job skips the base write in ethosu_job_hw_submit(). Both steps are ordinary submissions they control, and there is no race.
PR:L - All ethosu ioctls, including SUBMIT, are registered with flags 0, so any unprivileged user allowed to open the accel device node (for example, the render group) can reach the flawed region-size check. Root is not required.
UI:N - The attacker's own ioctl calls on their own BOs and command streams trigger the bug. No other user has to do anything.
S:U - The NPU is driven by the same kernel, and no IOMMU or VM boundary is crossed (the driver sets only a 40-bit DMA mask). The impact stays within the kernel's own security authority.
C:H - The NPU reads through a stale BASEP(2): a freed BO's physical address, or SRAM holding another client's data. The command stream can copy up to sram_size bytes from there into an attacker BO, disclosing kernel pages or other users' data.
I:H - NPU output operations can write through the stale region-2 base into pages that were freed and reused by the kernel, or into another client's buffer. This is a DMA use-after-free write that the attacker sizes, and it can corrupt kernel memory.
A:H - Uncontrolled DMA writes into reused kernel pages, or into a stale or reset base address, can corrupt kernel data structures, crash the system, or hang the NPU. The attacker can repeat this at will.
CVSS 3.1