CVE-2026-72014 PUBLISHED

drbd: reject data replies with an out-of-range payload size

Assigner: Linux
Reserved: 09.08.2026 Published: 15.08.2026 Updated: 17.08.2026

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

drbd: reject data replies with an out-of-range payload size

recv_dless_read() receives a P_DATA_REPLY from a peer into the bio of an outstanding read request. The peer-supplied payload length reaches it as the signed int data_size, and two peer-controlled inputs can make it negative. With a negotiated data-integrity-alg the digest length is subtracted first, so a reply whose payload is smaller than the digest underflows data_size. With no integrity algorithm (the default) data_size is assigned from the unsigned h95/h100 wire length and drbdd() never bounds it for a payload-carrying command, so a length above INT_MAX casts it negative; this path needs no non-default feature. The bio receive loop then computes expect = min_t(int, data_size, bv_len), which is negative, and drbd_recv_all_warn(mapped, expect) receives with a size_t of SIZE_MAX into the first mapped page.

The sibling receive path read_in_block() is not affected: it uses an unsigned size and rejects it against DRBD_MAX_BIO_SIZE before receiving. Reject a data reply whose size is negative after the optional digest subtraction, covering both triggers.

Impact: a malicious or man-in-the-middle DRBD peer copies attacker-chosen bytes past a bio page in the receiver, corrupting kernel memory. A node that reads from its peer (a diskless node, or read-balancing to the peer) is exposed in the default configuration; data-integrity-alg is not required.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 9.8

AV:N - Exploitation is delivered over the DRBD replication TCP protocol when a victim node receives a malicious P_DATA_REPLY from its peer or a man-in-the-middle on that link; recv_dless_read() is reached from drbdd() without any local syscall or ioctl on the victim. AC:L - The peer fully controls the wire length in the P_DATA_REPLY header, and two independent triggers (unsigned-to-signed overflow or digest subtraction underflow) deterministically force expect negative so drbd_recv_all_warn() receives SIZE_MAX bytes whenever the victim issues a remote read. PR:N - No account, capability, or administrative access on the victim host is required; a malicious DRBD peer or network man-in-the-middle on the replication link can send the crafted reply after connection setup, and cram-hmac-alg peer authentication is optional. UI:N - No end-user action is needed because diskless-primary and read-balancing configurations automatically send P_DATA_REQUEST packets to the peer, and the malicious P_DATA_REPLY is processed in the kernel receiver thread during normal I/O. S:U - The out-of-bounds socket receive corrupts kernel memory on the same host that runs DRBD; successful exploitation yields kernel compromise on that node but does not by itself cross a VM, container, or IOMMU security boundary. C:H - Receiving up to SIZE_MAX attacker-controlled bytes past the mapped bio page is an out-of-bounds kernel write that can corrupt adjacent heap or page data and be leveraged for arbitrary kernel memory disclosure, not merely a bounded leak. I:H - The bug copies attacker-chosen network data beyond the allocated bio buffer boundary, providing a kernel out-of-bounds write primitive that can corrupt kernel structures and enable arbitrary code execution or privilege escalation. A:H - Writing gigabytes past a bio page can immediately corrupt critical kernel memory and cause oops or panic, and repeated malicious replies can keep the node unavailable even before full exploitation.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to bca33f5442c3094511719d9db792ce3165d87e76 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to 741a682535deffe9ab7e5c89caf83571efbc9dd9 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to f14e87d7b166490bceb9603b39310e51595d05b9 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to f16866c62656865854106b79bcf6e4ca97a51a92 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to 5f59a8142000f0b8f75c432209ead73c424a745d (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to 38cc4867540ae8beedfe41a1a1a6ed37052c77d6 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to 648d4317326e6aa3f8c05cbf0fd14cc2eba6ca99 (excl.)
  • affected from b411b3637fa71fce9cf2acf0639009500f5892fe to bd910a7660d280595ef94cb6d193951d855d330f (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 2.6.33 is affected
  • unaffected from 0 to 2.6.33 (excl.)
  • unaffected from 5.10.261 to 5.10.* (incl.)
  • unaffected from 5.15.212 to 5.15.* (incl.)
  • unaffected from 6.1.178 to 6.1.* (incl.)
  • unaffected from 6.6.145 to 6.6.* (incl.)
  • unaffected from 6.12.97 to 6.12.* (incl.)
  • unaffected from 6.18.40 to 6.18.* (incl.)
  • unaffected from 7.1.5 to 7.1.* (incl.)
  • unaffected from 7.2 to * (incl.)

References