{"id":14902,"date":"2026-09-04T19:02:17","date_gmt":"2026-09-04T11:02:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63831"},"modified":"2026-09-04T19:02:17","modified_gmt":"2026-09-04T11:02:17","slug":"cve-2026-63831","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63831","title":{"rendered":"CVE-2026-63831 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nmac802154: llsec: add"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mac802154: llsec: add skb_cow_data() before in-place crypto<\/p>\n<p>llsec_do_encrypt_unauth(), llsec_do_encrypt_auth(),<br \/>\nllsec_do_decrypt_unauth(), and llsec_do_decrypt_auth() all perform<br \/>\nin-place cryptographic transformations on skb data.  They build a<br \/>\nscatterlist with sg_init_one() pointing into the skb&#8217;s linear data area<br \/>\nand then pass the same scatterlist as both src and dst to the crypto API<br \/>\n(e.g. crypto_skcipher_encrypt\/decrypt, crypto_aead_encrypt\/decrypt).<\/p>\n<p>On the RX path, __ieee802154_rx_handle_packet() clones the received skb<br \/>\nbefore handing it to each subscriber via ieee802154_subif_frame().  The<br \/>\ncloned skb shares the same underlying data buffer via reference<br \/>\ncounting.  When llsec_do_decrypt() subsequently modifies this shared<br \/>\nbuffer in place, it corrupts data that other clones &#8212; potentially<br \/>\nbelonging to other sockets or subsystems &#8212; still reference.<\/p>\n<p>On the TX path, similar data sharing can occur when an skb&#8217;s head has<br \/>\nbeen cloned (skb_cloned() returns true).<\/p>\n<p>The fix is to call skb_cow_data() before performing any in-place crypto<br \/>\noperation.  skb_cow_data() ensures that the skb&#8217;s data area is not<br \/>\nshared: if the skb head is cloned or the data spans multiple fragments,<br \/>\nit copies the data into a private buffer that can be safely modified in<br \/>\nplace.  This is the same pattern used by:<\/p>\n<p>  &#8211; ESP (net\/ipv4\/esp4.c, net\/ipv6\/esp6.c)<br \/>\n  &#8211; MACsec (drivers\/net\/macsec.c)<br \/>\n  &#8211; WireGuard (drivers\/net\/wireguard\/receive.c)<br \/>\n  &#8211; TIPC (net\/tipc\/crypto.c)<\/p>\n<p>Without this guard, in-place crypto on shared skb data leads to:<br \/>\n  &#8211; Silent data corruption of other skb clones<br \/>\n  &#8211; Use-after-free when the crypto API scatterwalk writes through a<br \/>\n    page that has already been freed by another clone&#8217;s kfree_skb()<br \/>\n  &#8211; Kernel crashes under concurrent 802.15.4 traffic with security<br \/>\n    enabled (KASAN\/KMSAN reports slab-use-after-free)<\/p>\n<p>Found by 0sec (https:\/\/0sec.ai) using automated source analysis.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>mac802154: llsec: add skb_cow_data() before in-place crypto<\/p>\n<p>llsec_do_encrypt_unauth(), llsec_do_encrypt_auth(),<br \/>\nllsec_do_decrypt_u<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-14902","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/14902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}