CVE-2026-46133: RDMA/rxe: Reject unknown opcodes before ICRC processing

Published May 28, 2026
·
Updated

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

RDMA/rxe: Reject unknown opcodes before ICRC processing

Even after applying commit 7244491dab34 ("RDMA/rxe: Validate pad and ICRC before payloadsize() in rxercv"), a single unauthenticated UDP packet can still trigger panic. That patch handled payloadsize() underflow only for valid opcodes with short packets, not for packets carrying an unknown opcode. The unknown-opcode OOB read described below predates that commit and reaches back to the initial Soft RoCE driver.

The check added there reads

pkt->paylen < headersize(pkt) + bthpad(pkt) + RXEICRCSIZE

where headersize(pkt) expands to rxeopcode[pkt->opcode].length. The rxeopcode[] array has 256 entries but is only populated for defined IB opcodes; any other entry (for example opcode 0xff) is zero-initialized, so length == 0 and the check degenerates to

pkt->paylen < 0 + bthpad(pkt) + RXEICRCSIZE

which does not constrain pkt->paylen enough. rxeicrchdr() then computes

rxeopcode[pkt->opcode].length - RXEBTHBYTES

which underflows when length == 0 and passes a huge value to rxecrc32(), causing an out-of-bounds read of the skb payload.

Reproduced on v7.0-rc7 with that fix applied, QEMU/KVM with CONFIGRDMARXE=y and CONFIGKASAN=y, after

rdma link add rxe0 type rxe netdev eth0

A single 48-byte UDP packet to port 4791 with BTH opcode=0xff and QPN=IBMULTICASTQPN triggers:

BUG: KASAN: slab-out-of-bounds in crc32le+0x115/0x170 Read of size 1 at addr ... The buggy address is located 0 bytes to the right of allocated 704-byte region Call Trace: crc32le+0x115/0x170 rxeicrchdr.isra.0+0x226/0x300 rxeicrccheck+0x13f/0x3a0 rxercv+0x6e1/0x16e0 rxeudpencaprecv+0x20a/0x320 udpqueuercvoneskb+0x7ed/0x12c0

Subsequent packets with the same shape fault on unmapped memory and panic the kernel. The trigger requires only module load and "rdma link add"; no QP, no connection, and no authentication.

Fix this by rejecting packets whose opcode has no rxeopcode[] entry, detected via the zero mask or zero length, before any length arithmetic runs.

Affected Software

11 affected componentsFixes available
Linux Linux kernel<=7.0-rc7
Linux Linux kernel>=4.8<5.10.258
Linux Linux kernel>=5.11<5.15.209
Linux Linux kernel>=5.16<6.1.175
Linux Linux kernel>=6.2<6.6.140
Linux Linux kernel>=6.7<6.12.88
Linux Linux kernel>=6.13<6.18.30
Linux Linux kernel>=6.19<7.0.7
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2
Microsoft azl3 kernel 6.6.139.1-1<6.6.141.1-1
6.6.141.1-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.6.141.1-1
  2. Upgrade

    Upgrade Linux kernel (RDMA/rxe) to a version that resolves this vulnerability.

    Patch 7244491dab34
  3. Compensating control

    Use firewall/ACL/network filtering to drop unauthenticated UDP packets sent to port 4791 matching the described pattern (e.g., BTH opcode=0xff) to prevent the panic trigger while patches are pending.

Event History

May 28, 2026
CVE Published
via MITRE·09:35 AM
Data Sourced
via MITRE·09:35 AM
DescriptionSeverity
Data Sourced
via NVD·10:16 AM
RemedyDescriptionSeverityWeaknessAffected Software
May 29, 2026
Data Sourced
via Microsoft·08:06 AM
DescriptionSeverityWeaknessAffected Software

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203