CVE-2026-31607 — usbip: validate number_of_packets in usbip_pack_ret_submit()
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.
Who exploits it and how urgent it is
A 0–100 score combining confirmed exploitation, ransomware and APT use, public exploits, EPSS and severity.
How the score was calculated
- EPSS 0.3% (30-day exploitation probability)+3
- Technical severity (critical)+10
The score orders the patch queue; it does not replace your asset context (internet exposure, criticality, compensating controls).
Triage
Is it exploited, how likely is exploitation, what does it touch, and how severe do the sources call it.
Remediation
Fixes and mitigations documented by the sources — linked to the original advisory.
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
- Documented patch — git.kernel.org (NIST National Vulnerability Database)
First 24 hours
Ordered from the record’s own fields — exposure first, because you cannot patch what you have not found. A rule-generated starting point.
- Identify exposed assets running the affected vendor/product/version combinations (Linux Linux, Linux Linux Kernel).
- The attack is network-based and needs no privileges: restrict exposure (ACLs, VPN, WAF) until patched.
- Apply the fixed version or the patch documented under Remediation.
- Search available logs for exploit probes matching the vulnerability class (memory corruption), errors and authentication anomalies.
Affected scope
Vendor, product and versions as the sources word them.
| Vendor | Product | Versions | Status | Source |
|---|---|---|---|---|
| Linux | Linux |
≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 5e1c4ece08ccdc197177631f111845a2c68eede3version 2.6.39≥ 2.6.38.3 and < 2.6.39≥ 2.6.35.13 and < 2.6.36≥ 2.6.34.11 and < 2.6.35≥ 2.6.33.10 and < 2.6.34≥ 2.6.32.37 and < 2.6.33version 5aa02704b9ee67c5b2ee26d54c5f4eb99e93ba9a and 12 moreversion db898d0c5c493ce4177d5e1d3a953e079a56a24bversion 1ce528277e1a66856ed3f7526c1e3458c0ed4a70version ca7d3501b7a287c18b5b470e871d3029b0f4842aversion d9638d9236eed035a575feddec61d036dacc2676≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 2ab833a16a825373aad2ba7d54b572b277e95b71≥ 1325f85fa49f57df034869de430f7c302ae23109 and < ef8ebb1c637b4cfb61a9dd2e013376774ee2033b≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 906f16a836de13fe61f49cdce2f66f2dbd14caf4≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 8d155e2d1c4102f74f82a2bf9c016164bb0f7384≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 885c8591784da6314f9aa82fa460ac69f9f79e5f≥ 1325f85fa49f57df034869de430f7c302ae23109 and < ce744264b06b97069b3722511ab355738311fee0≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 973f2c250289f5bf6cc146b98aa6fdde11fe50d6≥ 1325f85fa49f57df034869de430f7c302ae23109 and < 324262c38438255bf6bdbf6342ca47c0badaab76 |
Vulnerable | CVE Program (cve.org) e CISA ADP |
| Linux | Linux Kernel | ≥ 2.6.39 and < 6.6.136≥ 7.0 and < 7.0.1≥ 6.19 and < 6.19.14≥ 6.13 and < 6.18.24≥ 6.7 and < 6.12.83 | Vulnerable | NIST National Vulnerability Database |
Attack characteristics
The CVSS vector, decoded. It describes the attack, not your exposure to it.
Every base score collected
Sources score independently and may disagree; each row says who scored it and under which version.
| Score | Version | Severity | Expl. | Impact | Scored by |
|---|---|---|---|---|---|
| 9.8 | CVSS 3.1 | Critical | 3.9 | 5.9 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 via NIST National Vulnerability Database |
| 9.8 | CVSS 3.1 | Critical | — | — | Linux via CVE Program (cve.org) e CISA ADP |
| 7.3 | CVSS 3.1 | High | 1.8 | 5.5 | 0b0ca135-0b70-47e7-9f44-1890c2a1c46c via NIST National Vulnerability Database |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (score shown at the top: 416baaa9-dc9f-4396-8d5f-8c081fb06d67) Weakness MITRE
Weakness class according to MITRE’s CWE catalog.
EPSS over time FIRST
Oct 13, 2026 → Oct 14, 2026 · 2 reading(s) · max 0.44%
Detection
Read off the CVSS vector and the weakness class. Starting points, not tested rules.
- Prioritize edge telemetry for the network-reachable component (proxy, WAF, IDS/IPS).
- Correlate service crashes/restarts with inbound traffic; repeated crashes may indicate attempts.
Timeline
What happened to this CVE, newest first.
- 2026
- Affected products added · linux/linux
- Record published
- Fix documented
- CVSS changed · 9.8
- Source status changed · → Modified
- Record created in this database
- CVE published
Source activity
Repeated readings are counted rather than listed.
- 1× Official description updated · Oct 13, 2026 – Oct 13, 2026
References
18 on the record
- git.kernel.org/stable/c/ef8ebb1c637b4cfb61a9dd2e013376774ee2033b
- git.kernel.org/stable/c/885c8591784da6314f9aa82fa460ac69f9f79e5f
- git.kernel.org/stable/c/5e1c4ece08ccdc197177631f111845a2c68eede3
- git.kernel.org/stable/c/8d155e2d1c4102f74f82a2bf9c016164bb0f7384
- git.kernel.org/stable/c/2ab833a16a825373aad2ba7d54b572b277e95b71
- git.kernel.org/stable/c/906f16a836de13fe61f49cdce2f66f2dbd14caf4
- git.kernel.org/stable/c/ce744264b06b97069b3722511ab355738311fee0
- bugzilla.redhat.com/show_bug.cgi
- access.redhat.com/security/cve/CVE-2026-31607
- access.redhat.com/errata/RHSA-2026:25095
- git.kernel.org/stable/c/973f2c250289f5bf6cc146b98aa6fdde11fe50d6
- access.redhat.com/errata/RHSA-2026:19568
- access.redhat.com/errata/RHSA-2026:41236
- git.kernel.org/stable/c/324262c38438255bf6bdbf6342ca47c0badaab76
- access.redhat.com/errata/RHSA-2026:19569
- security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-31607.json
- access.redhat.com/errata/RHSA-2026:23224
- access.redhat.com/errata/RHSA-2026:24343
Elsewhere on this site
Related CVEs (same products)
- Critical CVE-2026-99999 ipv4: validate checksum_start before completing checksum 9h
- Unknown CVE-2026-98432 ipv4: free inet_opt and ireq_opt after an RCU grace period 9h
- Unknown CVE-2026-98424 wifi: cfg80211: undo netns switch if renaming the wiphy fails 1d
- Unknown CVE-2026-98425 wifi: mac80211: don't warn when an IBSS has no channel to scan 1d
- Unknown CVE-2026-98426 wifi: mwifiex: fix IRQ leak using wrong index in MSI-X error path 1d
- Unknown CVE-2026-98427 net/sched: codel: bound the dropping loop per dequeue call 1d
Not in any source we poll
Listed rather than left blank: an empty field and an unmeasured one look identical on screen, and only one is a reason to look elsewhere.
- No CISA SSVC assessment.
- No confirmed IOCs, IP addresses, domains, file hashes, or malware artifacts supplied.
- No organization-specific asset inventory, compensating-control status, or patch deployment evidence supplied.
- No exploit packet captures, log samples, or incident case IDs supplied.
Answered from this record
Text assembled only from the fields above — no additional claims.
What should defenders know first?
CVE-2026-31607 is "usbip: validate number_of_packets in usbip_pack_ret_submit()", rated Critical. It affects Linux (Linux); versions are in the scope table. It is not in CISA KEV, which does not rule out exploitation. CVSS 9.8 describes technical severity. EPSS 0.31% estimates the probability of exploitation in 30 days; neither replaces your asset context. First verify whether exposed or business-critical assets run the affected versions, apply vendor fixes or mitigations, and preserve logs for review.
Comments
Moderated technical discussion. Read the community guidelines.
No comments yet.
Sign in or create an account to comment and suggest corrections.