HIGH Introduced in 2.6.38
softing FwParse OOB
CVE-2026-80706
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
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.
02KernelScan AI Analysis
Risk summary
A malformed firmware blob for the Softing CAN card driver can cause out-of-bounds reads during parsing and out-of-bounds writes into DPRAM due to missing bounds checks and integer overflow in offset arithmetic. A local attacker who can supply or replace the firmware file can exploit this to corrupt kernel memory, potentially escalating privileges or crashing the system. The vulnerability requires the Softing CAN driver to be loaded and access to the firmware loading path.
Vulnerability analysis
The Softing CAN card firmware parser reads record headers, payloads, and checksums from a firmware blob without validating that those reads stay within the blob's bounds, so a truncated or crafted record can cause out-of-bounds reads. The same records also supply addresses and lengths for copying data into DPRAM memory; the generic loader used mixed signed arithmetic that could wrap around and bypass the bounds check, while the application loader performed no bounds check at all before writing. The fix passes the firmware end pointer into the parser and validates the full record span before reading, uses a wide signed offset to prevent arithmetic wrap-around in the generic DPRAM copy, and validates the application staging span against the mapped DPRAM size before copying. The vulnerable code path is reached when loading firmware for a Softing CAN card, which requires the softing driver to be loaded and access to the firmware file, typically needing local privileges to trigger.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 2.6.38 | 5.10.265 | f6d9a6a95124 |
| 5.15 | 2.6.38 | 5.15.216 | 84c850b08fc0 |
| 6.1 | 2.6.38 | 6.1.183 | d0eac0ea7cf4 |
| 6.12 | 2.6.38 | 6.12.103 | ad331e26fd21 |
| 6.18 | 2.6.38 | 6.18.44 | 2ee477e541a6 |
| 6.6 | 2.6.38 | 6.6.151 | ae588e5b9cc2 |
| 7.1 | 2.6.38 | 7.1.8 | 808ed899dcf8 |
| mainline | 2.6.38 | 7.2 | 856d6cb04e54 |
| cip/4.19 | 2.6.38 | 4.19.325-cip136 | 186a6c261b93 |
| cip/4.19-rt | 2.6.38 | 4.19.325-cip136-rt50 | 186a6c261b93 |
| cip/4.4 | 2.6.38 | 4.4.302-cip115 | 0555228d5ff8 |
| cip/4.4-rt | 2.6.38 | 4.4.302-cip115-rt63 | 0555228d5ff8 |
| cip/5.10 | 2.6.38 | 5.10.268-cip77 | f6d9a6a95124 |
| cip/5.10-rt | 2.6.38 | 5.10.268-cip77-rt34 | f6d9a6a95124 |
| cip/6.1 | 2.6.38 | 6.1.187-cip60 | d0eac0ea7cf4 |
| cip/6.1-rt | 2.6.38 | 6.1.189-cip61-rt32 | d0eac0ea7cf4 |
| cip/6.12 | 2.6.38 | 6.12.104-cip30 | ad331e26fd21 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.104-cip30 |
| cip/6.1 | Fixed in 6.1.187-cip60 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.268-cip77 |
| cip/5.10-rt | Fixed in 5.10.268-cip77-rt34 |
| cip/4.19 | Fixed in 4.19.325-cip136 |
| cip/4.19-rt | Fixed in 4.19.325-cip136-rt50 |
| cip/4.4 | Fixed in 4.4.302-cip115 |
| cip/4.4-rt | Fixed in 4.4.302-cip115-rt63 |