Skip to main content

Linux Kernel CVE-2026-63996

| EUVDEUVD-2026-45569 HIGH
2026-07-19 Linux GHSA-cwvw-p4x2-27qh
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
6.3 MEDIUM

Requires attacker-controlled or corrupted transceiver hardware (AV:P, AC:H) plus local CAP_NET_ADMIN to run ethtool module ops (PR:L); a kernel-heap OOB write yields full C/I/A impact.

3.1 AV:P/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:P/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
7.0 MEDIUM
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:46 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.8 (HIGH)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:56 cve.org
HIGH 7.8
CVE Published
Jul 19, 2026 - 14:56 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

ethtool: cmis: require exact CDB reply length

Malicious SFP module could respond with rpl_len longer than what cmis_cdb_process_reply() expected, leading to OOB writes. Malicious HW is a bit theoretical but some modules may just be buggy and/or the reads may occasionally get corrupted, so let's protect the kernel.

The existing check protects from short replies. We need to protect from long ones, too. All callers that pass a non-zero rpl_exp_len cast the reply payload to a fixed-layout struct and read fields at fixed offsets, with no version negotiation or short-reply handling:

  • cmis_cdb_validate_password()
  • cmis_cdb_module_features_get()
  • cmis_fw_update_fw_mng_features_get()

so let's assume that responses longer than expected do not have to be handled gracefully here. Add a warning message to make the debug easier in case my understanding is wrong...

Note that page_data->length (argument of kmalloc) comes from last arg to ethtool_cmis_page_init() which is rpl_exp_len.

Note2 that AIs also like to point out overflows in args->req.payload itself (which is a fixed-size 120 B buffer, on the stack), but callers should be reading structs defined by the standard, so protecting from requests for more data than max seem like defensive programming.

AnalysisAI

Out-of-bounds kernel write in the Linux kernel's ethtool CMIS CDB handling (cmis_cdb_process_reply) allows a malicious or buggy SFP/QSFP transceiver module to corrupt kernel memory by returning a CDB reply whose rpl_len exceeds the expected rpl_exp_len. Affected callers (password validation, module feature discovery, and firmware-management feature discovery) cast the reply payload to fixed-layout structs at fixed offsets, so an over-long reply writes past the kmalloc'd page buffer. There is no public exploit identified at time of analysis, EPSS risk is low (0.17%), and it is not on CISA KEV; the fix is a defensive exact-length check merged upstream and backported to stable trees.

Technical ContextAI

The affected code is in the kernel's ethtool subsystem support for CMIS (Common Management Interface Specification) modules - the management model used by modern optical transceivers (SFP-DD/QSFP-DD/OSFP) accessed over the module's two-wire (I2C) management interface. CMIS uses a CDB (Command Data Block) request/response mechanism; the kernel issues a command and reads a reply into a buffer sized by rpl_exp_len, which is passed to ethtool_cmis_page_init() and ultimately to kmalloc as page_data->length. cmis_cdb_process_reply() already validated against short replies but not long ones. The root cause is a classic out-of-bounds write / buffer overflow (CWE-787 / CWE-120); the feed lists CWE as N/A but the tags explicitly call it 'Buffer Overflow'. Because callers such as cmis_cdb_validate_password(), cmis_cdb_module_features_get(), and cmis_fw_update_fw_mng_features_get() read fixed-offset struct fields with no version negotiation or short-reply handling, an attacker-controlled rpl_len larger than the allocation overflows the heap buffer.

RemediationAI

Vendor-released patch: update to a fixed Linux stable release - 6.12.93, 6.18.35, or 7.0.12 (or mainline 7.1) or later on your respective branch; distribution users should install the kernel update carrying these commits from their vendor. The fix adds an exact CDB reply-length check that rejects (and warns on) replies longer than rpl_exp_len. The corresponding upstream commits are at https://git.kernel.org/stable/c/eb5dcd740cd7fa27bc2caeff2d28ef28e93ff4d3 and the other git.kernel.org references above; advisory tracking is at https://nvd.nist.gov/vuln/detail/CVE-2026-63996. Where immediate patching is not possible, the practical compensating control is to restrict physical insertion of untrusted transceiver modules and limit which users hold CAP_NET_ADMIN (needed to drive ethtool module operations); avoid running ethtool transceiver firmware/module-feature queries against unknown optics. These controls reduce exposure but do not address buggy/corrupted-read cases, so patching remains the real fix.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-63996 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy