CVE-2026-63831CWE-416

CVE-2026-63831

High · published July 19, 2026

CVSS v3.1
8.8
EPSS
0%
Percentile
15.8
In the wild
Unconfirmed
What it is

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

mac802154: llsec: add skb_cow_data() before in-place crypto

llsec_do_encrypt_unauth(), llsec_do_encrypt_auth(),

llsec_do_decrypt_unauth(), and llsec_do_decrypt_auth() all perform

in-place cryptographic transformations on skb data. They build a

scatterlist with sg_init_one() pointing into the skb's linear data area

and then pass the same scatterlist as both src and dst to the crypto API

(e.g. crypto_skcipher_encrypt/decrypt, crypto_aead_encrypt/decrypt).

On the RX path, __ieee802154_rx_handle_packet() clones the received skb

before handing it to each subscriber via ieee802154_subif_frame(). The

cloned skb shares the same underlying data buffer via reference

counting. When llsec_do_decrypt() subsequently modifies this shared

buffer in place, it corrupts data that other clones -- potentially

belonging to other sockets or subsystems -- still reference.

On the TX path, similar data sharing can occur when an skb's head has

been cloned (skb_cloned() returns true).

The fix is to call skb_cow_data() before performing any in-place crypto

operation. skb_cow_data() ensures that the skb's data area is not

shared: if the skb head is cloned or the data spans multiple fragments,

it copies the data into a private buffer that can be safely modified in

place. This is the same pattern used by:

- ESP (net/ipv4/esp4.c, net/ipv6/esp6.c)

- MACsec (drivers/net/macsec.c)

- WireGuard (drivers/net/wireguard/receive.c)

- TIPC (net/tipc/crypto.c)

Without this guard, in-place crypto on shared skb data leads to:

- Silent data corruption of other skb clones

- Use-after-free when the crypto API scatterwalk writes through a

page that has already been freed by another clone's kfree_skb()

- Kernel crashes under concurrent 802.15.4 traffic with security

enabled (KASAN/KMSAN reports slab-use-after-free)

Found by 0sec (https://0sec.ai) using automated source analysis.

The record
Technical detail
CVSS v3.1
8.8 · HIGH
Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00252 · 15.8th percentile
Weakness
CWE-416 · Use After Free
Published
2026-07-19T16:16Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel≥ 3.16, < 5.10.2605.10.260
linux/linux_kernel≥ 5.11, < 5.15.2115.15.211
linux/linux_kernel≥ 5.16, < 6.1.1776.1.177
linux/linux_kernel≥ 6.2, < 6.6.1446.6.144
linux/linux_kernel≥ 6.7, < 6.12.956.12.95
linux/linux_kernel≥ 6.13, < 6.18.386.18.38
linux/linux_kernel≥ 6.19, < 7.1.37.1.3
References (8)
EPSS history
Timeline
  • 19 JUL 12:02Z
    mac802154: llsec: add skb_cow_data() before in-place crypto
    cvelistv5