CRITICAL Introduced in 3.12
sr9700 RxFixup OOB
CVE-2026-98597
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: net: usb: sr9700: include receive overhead in the length check The receive fixup subtracts the Ethernet CRC from the reported packet length, but compares that payload length against the whole remaining receive buffer. The following copy starts after the three-byte header, and the cursor advance consumes both that header and the four-byte CRC. Require the payload to fit after SR_RX_OVERHEAD before copying it or advancing to the next packet. The loop already ensures that the remaining buffer is larger than the overhead, so the subtraction is safe. The issue was found by our static-analysis tool.
02KernelScan AI Analysis
Risk summary
A remote attacker on the Ethernet network connected to an SR9700 USB-to-Ethernet adapter can send a crafted frame that causes an out-of-bounds write in the kernel receive path, leading to memory corruption, potential code execution, and kernel panic. The vulnerability is reachable without authentication or user interaction.
Vulnerability analysis
The SR9700 USB network driver's receive fixup function incorrectly validates incoming packet lengths. It subtracts the 4-byte Ethernet CRC from the reported length to obtain the payload size, but compares this payload size against the entire remaining USB receive buffer. However, the actual data copy starts after a 3-byte header, and the cursor advance consumes both that header and the CRC (7 bytes total overhead). This mismatch allows a malicious packet to claim a payload length that fits in the buffer but actually overruns it when the header offset is accounted for, corrupting adjacent kernel memory. The fix adds a check that the payload length fits within the buffer minus the full receive overhead (SR_RX_OVERHEAD). An attacker on the Ethernet network segment connected to the adapter can trigger this by sending a specially crafted frame; no privileges or user interaction are required.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 3.12 | 5.10.271 | 92d88c88390f |
| 5.15 | 3.12 | 5.15.222 | baf07d5153d3 |
| 6.1 | 3.12 | 6.1.189 | 8488779d9bdd |
| 6.12 | 3.12 | 6.12.112 | 9b59b00890c5 |
| 6.18 | 3.12 | 6.18.55 | 6ab6c9d120b3 |
| 6.6 | 3.12 | 6.6.158 | e1f5b74edccf |
| 7.2 | 3.12 | 7.2.9 | 05b442709bd5 |
| mainline | 3.12 | 7.3 | c06bde80ae7a |
| cip/5.10 | 3.12 | 5.10.271-cip78 | 92d88c88390f |
| cip/6.1 | 3.12 | 6.1.189-cip61 | 8488779d9bdd |
| cip/6.1-rt | 3.12 | 6.1.189-cip61-rt32 | 8488779d9bdd |
| cip/6.12 | 3.12 | 6.12.112-cip33 | 9b59b00890c5 |
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.112-cip33 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |