Bug 2502420 (CVE-2026-63996) - CVE-2026-63996 kernel: ethtool: cmis: require exact CDB reply length
Summary: CVE-2026-63996 kernel: ethtool: cmis: require exact CDB reply length
Keywords:
Status: NEW
Alias: CVE-2026-63996
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-07-19 16:07 UTC by OSIDB Bzimport
Modified: 2026-11-04 11:11 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:93911 0 None None None 2026-11-02 15:14:21 UTC
Red Hat Product Errata RHSA-2026:93930 0 None None None 2026-11-02 16:46:44 UTC

Description OSIDB Bzimport 2026-07-19 16:07:11 UTC
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.

Comment 7 Jon Orris 2026-11-02 15:14:20 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 10

Via RHSA-2026:93911 https://access.redhat.com/errata/RHSA-2026:93911

Comment 8 Jon Orris 2026-11-02 16:46:44 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9

Via RHSA-2026:93930 https://access.redhat.com/errata/RHSA-2026:93930


Note You need to log in before you can comment on or make changes to this bug.