remoteproc: fix OOB read via signed offset in rsc_table_for_each_entry()
- 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.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 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: remoteproc: fix OOB read via signed offset in rsc_table_for_each_entry() 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 size_t in the expression "table_sz - 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.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in 0d385be8f199b349f325cf90584b47b6a044ea79; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in cc85e0d3d3333fd5fd2d50c9a4578d209d7f2564; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in 6a01ad25aa4f3a02153cf1d112cb9b65865cd5d8; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in c82241a9454b2d30d53b50884f94b7972ba44a5e; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in bc4940793aaa16a9cf90063b11d6926f8014a1b7; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in 6fd220604f06c746760183df74b07384c3fdd660; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in 6282d47b24b0c98d08d02807d676a7f67b4c052e; From fd2c15ec1dd3c2fdfc6ff03bb9644da9d530e3b9 · fixed in bb840ea69347aff7bde5a208e7b5b180669a7656
- Linux Linux
3.4
- KernelLinux
From 3.4.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6
References 8
git.kernel.org
- stable/c/0d385be8f199b349f325cf90584b47b6a044ea79
- stable/c/cc85e0d3d3333fd5fd2d50c9a4578d209d7f2564
- stable/c/6a01ad25aa4f3a02153cf1d112cb9b65865cd5d8
- stable/c/c82241a9454b2d30d53b50884f94b7972ba44a5e
- stable/c/bc4940793aaa16a9cf90063b11d6926f8014a1b7
- stable/c/6fd220604f06c746760183df74b07384c3fdd660
- stable/c/6282d47b24b0c98d08d02807d676a7f67b4c052e
- stable/c/bb840ea69347aff7bde5a208e7b5b180669a7656