Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-64450

tipc: fix out-of-bounds read in broadcast Gap ACK blocks
Back to all
CVE

CVE-2026-64450

tipc: fix out-of-bounds read in broadcast Gap ACK blocks

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

tipc: fix out-of-bounds read in broadcast Gap ACK blocks

A broadcast PROTOCOL/STATE_MSG can carry a Gap ACK blocks record in its

data area. tipcgetgapackblks() only verifies that the record's len

field is self-consistent with its ugackcnt/bgackcnt counts

(sz == structsize(p, gacks, ugackcnt + bgack_cnt)); it does not check

that the record actually fits in the message data area, msgdatasz().

The unicast caller tipclinkproto_rcv() bounds it ("if (glen > dlen)

break;"), but the broadcast caller tipcbcastsync_rcv() discards the

returned size, so tipclinkadvance_transmq() copies the record off the

receive skb with an attacker-controlled count:

thisga = kmemdup(ga, structsize(ga, gacks, ga->bgack_cnt),

  GFP_ATOMIC);

A TIPC neighbour that negotiated TIPCGAPACK_BLOCK triggers it with one

ordinary broadcast STATEMSG (msgbcackinvalid() clear), sized so its

data area is short, carrying a Gap ACK record with len = 0x400,

bgackcnt = 0xff and ugackcnt = 0. len then equals

struct_size(p, gacks, 255), so the consistency check passes and ga is

non-NULL; kmemdup() reads struct_size(ga, gacks, 255) = 1024 bytes out

of the much smaller skb:

  BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x48/0x60

  Read of size 1024 at addr ffff0000c7030d38 by task poc864/69

  Call trace:

   kmemdup_noprof+0x48/0x60

   tipclinkadvance_transmq+0x86c/0xb80

   tipclinkbcackrcv+0x19c/0x1e0

   tipcbcastsync_rcv+0x1c4/0x2c4

   tipc_rcv+0x85c/0x1340

   tipcl2rcv_msg+0xac/0x104

  The buggy address belongs to the object at ffff0000c7030d00

   which belongs to the cache skbuffsmallhead of size 704

  The buggy address is located 56 bytes inside of

   allocated 704-byte region [ffff0000c7030d00, ffff0000c7030fc0)

The copied-out bytes are subsequently consumed as gap/ack values, but

the read is already out of bounds at the kmemdup() regardless of how

they are used.

The unicast STATE path drops such a message: "if (glen > dlen) break;"

skips the rest of STATE_MSG handling and the skb is freed. Make the

broadcast path drop it too. tipcbcastsync_rcv() now bounds the record

against msgdatasz() and, when it does not fit, reports it back through

tipcnodebcsyncrcv() to tipc_rcv() so the skb is discarded rather than

processed. ga is not cleared on this path: ga == NULL already means

"legacy peer without Selective ACK", a distinct legitimate state.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
9.1
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/016f5995c37a5a2c45198308f830f244517d70b7, https://git.kernel.org/stable/c/055663d21dc4336f67933ab26bef3c5934be6324, https://git.kernel.org/stable/c/2b66974a1b6134a4bbc3bfed181f7418f688eb54, https://git.kernel.org/stable/c/2de42e268174766cb2e2b90721afdfdff70e0d8d, https://git.kernel.org/stable/c/74b45af86a767594ba52330cd440ea84e24d700d, https://git.kernel.org/stable/c/9a51115fcdc78687c8852bf93a1db3951dbb223b, https://git.kernel.org/stable/c/a21ed5064217cc33726da6c7ef1a520eba43aea1, https://git.kernel.org/stable/c/f333b6851bdf326fd2134133272dbbed0c94d921, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64450.json, https://nvd.nist.gov/vuln/detail/CVE-2026-64450, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

9.1

CVSS Score
0
10

Basic Information

Base CVSS
9.1
EPSS Probability
0.00537%
EPSS Percentile
0.43628%
Introduced Version
d7626b5acff9227e2a65da636a53e09bdafdc0aa,5.8.0,5.11.0,5.16.0,6.2.0,6.7.0,6.13.0,6.19.0,0
Fix Available
2b66974a1b6134a4bbc3bfed181f7418f688eb54,5.10.261,5.15.212,6.1.178,6.6.145,6.12.96,6.18.39,7.1.4,6.1.180-1,6.12.100-1~deb12u1,6.12.96-1,7.0.0-1012.12~24.04.1,7.0.0-1011.11~24.04.1,7.0.0-31.31~24.04.1,7.0.0-31.31.1~24.04.1,0:6.12.0-206.104.3.3.el10uek,0:5.15.0-324.217.5.2.el9uek,0:6.12.0-206.104.3.3.el9uek,0:5.15.0-324.217.5.2.el8uek,0:5.10.262-262.1063.amzn2,0:1.0-0.amzn2,1:6.18.39-79.141.amzn2023,1:1.0-0.amzn2023,1:6.12.100-125.179.amzn2023,1:6.1.180-225.360.amzn2023

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading