KernelScan.io

CRITICAL Introduced in 3.12

sr9700 RxFixup OOB

CVE-2026-98597

CVSS 9.8 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

01

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.

02

Engine v0.9.0

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.

Affecteddrivers/net/usb/sr9700.c (sr9700 USB network driver)

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.

03

BranchIntroducedFixed inPatch commit
5.103.125.10.27192d88c88390f
5.153.125.15.222baf07d5153d3
6.13.126.1.1898488779d9bdd
6.123.126.12.1129b59b00890c5
6.183.126.18.556ab6c9d120b3
6.63.126.6.158e1f5b74edccf
7.23.127.2.905b442709bd5
mainline3.127.3c06bde80ae7a
cip/5.103.125.10.271-cip7892d88c88390f
cip/6.13.126.1.189-cip618488779d9bdd
cip/6.1-rt3.126.1.189-cip61-rt328488779d9bdd
cip/6.123.126.12.112-cip339b59b00890c5

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.112-cip33
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)