← All Advisories
Reported from OT-Advisories.com as of

CVE-2026-31607

Last refreshed2026-10-17

Status: UPDATED  |  Advisory ID: CVE-2026-31607

Key Details

CVECVE-2026-31607
CVSS Score / Version
9.8 (Critical) / CVSS v3.1
Updated2026-10-16
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Prose
attack vector is network; attack complexity is low; privileges required is none; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.
Affected products
see table below
Classified as
CWE-787 (Out-of-bounds Write)

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
LinuxLinux Kernel
Red HatRed Hat Enterprise Linux 10
Red HatRed Hat Enterprise Linux 10.0 Extended Update Support
Red HatRed Hat Enterprise Linux 9
Red HatRed Hat Enterprise Linux 9.6 Extended Update Support
Red HatRed Hat Enterprise Linux 7 Extended Lifecycle Support
SubsystemsOT Supporting Infrastructure
SectorsAll Sectors

What to Know

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

usbip: validate number_of_packets in usbip_pack_ret_submit()

When a USB/IP client receives a RET_SUBMIT response,

usbip_pack_ret_submit() unconditionally overwrites

urb->number_of_packets from the network PDU. This value is

subsequently used as the loop bound in usbip_recv_iso() and

usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible

array whose size was fixed at URB allocation time based on the

*original* number_of_packets from the CMD_SUBMIT.

A malicious USB/IP server can set number_of_packets in the response

to a value larger than what was originally submitted, causing a heap

out-of-bounds write when usbip_recv_iso() writes to

urb->iso_frame_desc[i] beyond the allocated region.

KASAN confirmed this with kernel 7.0.0-rc5:

BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640

Write of size 4 at addr ffff888106351d40 by task vhci_rx/69

The buggy address is located 0 bytes to the right of

allocated 320-byte region [ffff888106351c00, ffff888106351d40)

The server side (stub_rx.c) and gadget side (vudc_rx.c) already

validate number_of_packets in the CMD_SUBMIT path since commits

c6688ef9f297 ("usbip: fix stub_rx: harden CMD_SUBMIT path to handle

malicious input") and b78d830f0049 ("usbip: fix vudc_rx: harden

CMD_SUBMIT path to handle malicious input"). The server side validates

against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point.

On the client side we have the original URB, so we can use the tighter

bound: the response must not exceed the original number_of_packets.

This mirrors the existing validation of actual_length against

transfer_buffer_length in usbip_recv_xbuff(), which checks the

response value against the original allocation size.

Kelvin Mbogo's series ("usb: usbip: fix integer overflow in

usbip_recv_iso()", v2) hardens the receive-side functions themselves;

this patch complements that work by catching the bad value at its

source -- in usbip_pack_ret_submit() before the overwrite -- and

using the tighter per-URB allocation bound rather than the global

USBIP_MAX_ISO_PACKETS limit.

Fix this by checking rpdu->number_of_packets against

urb->number_of_packets in usbip_pack_ret_submit() before the

overwrite. On violation, clamp to zero so that usbip_recv_iso() and

usbip_pad_iso() safely return early. (NVD)

What to Do

Monitor Linux's and Red Hat's web pages for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-31607
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-31607
Report compilation © 2026 OT-Advisories.com  ·  CC BY 4.0  ·  Source materials remain the property of their respective publishers as cited.