CVE-2026-52943
net: skbuff: pskb_carve सहायकों में लुप्त zerocopy संदर्भ को ठीक करें
- प्रकाशित
- 24 जून 2026
- अद्यतन
- 8 सित॰ 2026
- सीएनए असाइन करना
- Linux
- साक्ष्य देखे गए
- 17 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hकम · अगले 30 दिन
- प्रतिशत
- 15.1%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
Linux कर्नेल में, निम्नलिखित भेद्यता को हल किया गया है: net: skbuff: pskb_carve हेल्पर्स में लुप्त zerocopy संदर्भ को ठीक करें pskb_carve_inside_header() और pskb_carve_inside_nonlinear() दोनों पुराने skb_shared_info हेडर को memcpy() के माध्यम से एक नए बफर में कॉपी करते हैं, जिसमें MSG_ZEROCOPY skbs के लिए destructor_arg पॉइंटर (uarg) शामिल होता है। दोनों फ़ंक्शन नए shinfo के लिए net_zcopy_get() को कॉल नहीं करते हैं, जिससे एक बेहिसाब धारक (unaccounted holder) बनता है: destructor_arg सेट वाला हर skb_shared_info मुक्त होने पर एक बार skb_zcopy_clear() को कॉल करेगा, लेकिन नई कॉपी के लिए संबंधित net_zcopy_get() कभी कॉल नहीं किया गया था। बार-बार कॉल uarg->refcnt को समय से पहले शून्य पर ले जाते हैं, जिससे ubuf_info_msgzc मुक्त हो जाता है जबकि TX skbs अभी भी जीवित destructor_arg पॉइंटर्स रखते हैं। KASAN मुक्त ubuf_info_msgzc पर use-after-free की रिपोर्ट करता है: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 देर से एक्सेस का उपभोग करने वाला skb अभी भी pskb_carve_inside_nonlinear() द्वारा कॉपी किए गए shinfo->destructor_arg के माध्यम से उसी uarg को संदर्भित कर रहा था, बिना refcount वृद्धि के। यह विश्वसनीय रूप से शोषण योग्य साबित हुआ है: एक कार्यशील proof-of-concept डिफ़ॉल्ट कर्नेल कॉन्फ़िगरेशन पर एक अन-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता से पूर्ण रूट विशेषाधिकार वृद्धि प्राप्त करता है। फिक्स pskb_expand_head() के पैटर्न का अनुसरण करता है जिसकी संरचना memcpy/cloned समान है। pskb_carve_inside_header() के लिए, net_zcopy_get() को skb_orphan_frags() के सफल होने के बाद रखा गया है, इसलिए orphan त्रुटि पथ को किसी सफाई की आवश्यकता नहीं है। pskb_carve_inside_nonlinear() के लिए, net_zcopy_get() को सभी विफलता बिंदुओं के बाद और skb_release_data() से ठीक पहले रखा गया है, इसलिए किसी भी त्रुटि पथ को सफाई की आवश्यकता नहीं है -- यह pskb_expand_head() से अधिक निकटता से मेल खाता है और संतुलित net_zcopy_put() की आवश्यकता से बचाता है।
स्रोत
1जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।