CVE-2026-90314: remoteproc: fix OOB read via signed offset in rsc_table_for_each_entry()
In the Linux kernel, the following vulnerability has been resolved:
remoteproc: fix OOB read via signed offset in rsctableforeachentry()
table->offset[i] is a u32 from firmware, but was stored into a signed int. A crafted offset like 0xFFFFFFF0 becomes -16, placing hdr 16 bytes before the table buffer. The subsequent avail check was bypassed because the negative int was promoted to a large sizet in the expression "tablesz - offset - sizeof(hdr)", yielding a large positive avail and letting the out-of-bounds hdr->type read proceed undetected.
Store the offset as u32 and validate it with unsigned comparisons before any pointer arithmetic.
Affected Software
Event History
Frequently Asked Questions
What does an attacker need to control to trigger the out-of-bounds read?
An attacker needs to provide firmware containing a crafted remoteproc resource-table offset. An offset such as 0xFFFFFFF0 is interpreted as -16 when stored in a signed integer, causing the parser to access memory before the table buffer.
What is the practical impact of the flawed bounds check?
The negative offset is promoted to a large size_t value during the available-space calculation, bypassing the intended validation. This allows an out-of-bounds read of the resource header type to proceed.
What should be changed to remediate the issue?
Offsets supplied by firmware should be stored as u32 and validated with unsigned comparisons before they are used in pointer arithmetic. The referenced stable kernel commits contain the resolved implementation.