can: softing: fw_parse(): validate firmware record spans
- 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.265, 5.15.216, 6.1.183, 6.6.151, 6.12.103, 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
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: can: softing: fw_parse(): validate firmware record spans fw_parse() reads a fixed record header, a firmware-provided payload, and a trailing checksum without knowing the end of the firmware blob. A truncated record can therefore make those reads exceed the blob. The same record also supplies addresses and lengths for writes into DPRAM. The generic loader uses wrap-prone mixed signed arithmetic for its bounds check, while the application loader does not bound the staging copy at all. Pass the firmware end to the parser and validate the full source record. Use a signed wide offset for generic DPRAM records and validate the application staging span against the mapped DPRAM before copying.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in f6d9a6a9512430b395a1940d7b216394fd02d30b; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in 84c850b08fc0d671c245144b619683129b55690a; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in d0eac0ea7cf493e787fd7b4a556e43ef03cb4b50; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in ae588e5b9cc268de1aabf30f939f0870717ca164; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in ad331e26fd213a19fee0de18cdacd67b7ff5b478; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in 2ee477e541a6d5e434d6a4041c6b677ab42e1d82; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in 808ed899dcf8bdef66894fda5eb7ee4bb0eb8dc1; From 03fd3cf5a179da12e6bee5e9d74b648aff68dc4c · fixed in 856d6cb04e5407523566b075841dcd6423757d1c
- Linux Linux
2.6.38
- KernelLinux
From 2.6.38 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.151; From 6.7.0 · fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; From 6.19.0 · fixed in 7.1.8
References 8
git.kernel.org
- stable/c/f6d9a6a9512430b395a1940d7b216394fd02d30b
- stable/c/84c850b08fc0d671c245144b619683129b55690a
- stable/c/d0eac0ea7cf493e787fd7b4a556e43ef03cb4b50
- stable/c/ae588e5b9cc268de1aabf30f939f0870717ca164
- stable/c/ad331e26fd213a19fee0de18cdacd67b7ff5b478
- stable/c/2ee477e541a6d5e434d6a4041c6b677ab42e1d82
- stable/c/808ed899dcf8bdef66894fda5eb7ee4bb0eb8dc1
- stable/c/856d6cb04e5407523566b075841dcd6423757d1c