All vulnerabilities
CVE-2026-98612

Linux: net: usb: catc: bound the RX packet length in catc_rx_done()

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.19%Chance of exploitation activity in the next 30 days, higher than 8% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in3942557938f846e7481f6ccb2b41ccbdee61baa1Also 2f87bbd5a7bf6ee79d598f7e22cf77810d29ae87, 4cc0a8eb2f9336cfa3e4ac329bc5585ca970ced3 and 4 moreCVE List
Published18 Oct 2026Updated 19 Oct 2026CVE List

What fixes it

  • 3942557938f846e7481f6ccb2b41ccbdee61baa1LinuxCVE List
  • 2f87bbd5a7bf6ee79d598f7e22cf77810d29ae87LinuxCVE List
  • 4cc0a8eb2f9336cfa3e4ac329bc5585ca970ced3LinuxCVE List
  • 21e206dd88b3de6e36bb607dec3797c59bc3007bLinuxCVE List
  • 801e21cf7dd6bcee31db907625d5045f21c9c1d9LinuxCVE List
  • 9d4be026bdff2c1da7b6c7e01c0a47f2df409e97LinuxCVE List
Show all 7 fixed versions
  • 9d565b6b72fe3f41fd43636e143072848105189fLinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

net: usb: catc: bound the RX packet length in catc_rx_done()

catc_rx_done() walks a multi-packet URB, reading a two-byte length from each packet header. Its bound, pkt_len > urb->actual_length, ignores the header offset and compares against the whole transfer rather than the bytes left from pkt_start, so a crafted packet header makes skb_copy_to_linear_data() read past the buffer.

A length below ETH_HLEN is also accepted, including zero, and eth_type_trans() then reads a MAC header from the uninitialised tailroom of a shorter skb. The is_f5u011 branch takes its length straight from the transfer, so a zero-length URB reaches the same path.

Track the bytes remaining from the current packet, and reject a header that does not fit, a length past what is left, and a length below an Ethernet header.

A transfer shorter than an Ethernet header, including a zero-length one, previously became a runt skb passed to netif_rx() and counted as received; it is now counted in rx_length_errors and ends the walk.

Text from CVE List

Affected versions 18

  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 3942557938f846e7481f6ccb2b41ccbdee61baa1CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 2f87bbd5a7bf6ee79d598f7e22cf77810d29ae87CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 4cc0a8eb2f9336cfa3e4ac329bc5585ca970ced3CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 21e206dd88b3de6e36bb607dec3797c59bc3007bCVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 801e21cf7dd6bcee31db907625d5045f21c9c1d9CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before dd9c6f8f05170223edec2dac476606cd40d9acb7CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 9d4be026bdff2c1da7b6c7e01c0a47f2df409e97CVE List
  • Linuxaffected: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 before 9d565b6b72fe3f41fd43636e143072848105189fCVE List
  • Linuxaffected: 2.6.12CVE List
  • Linuxunaffected: all versions before 2.6.12CVE List
  • Linuxunaffected: 5.10.271 through 5.10.*CVE List
  • Linuxunaffected: 5.15.222 through 5.15.*CVE List
  • Linuxunaffected: 6.1.189 through 6.1.*CVE List
  • Linuxunaffected: 6.6.158 through 6.6.*CVE List
  • Linuxunaffected: 6.12.112 through 6.12.*CVE List
  • Linuxunaffected: 6.18.55 through 6.18.*CVE List
  • Linuxunaffected: 7.2.9 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 8