CVE-2026-43503
net: skbuff: साझा-फ्रैग मार्कर को फ्रैग-ट्रांसफर हेल्पर्स के माध्यम से प्रसारित करें
- प्रकाशित
- 23 मई 2026
- अद्यतन
- 24 अग॰ 2026
- सीएनए असाइन करना
- Linux
- साक्ष्य देखे गए
- 8 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:Hकम · अगले 30 दिन
- प्रतिशत
- 27.1%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
Linux कर्नेल में, निम्नलिखित भेद्यता को हल किया गया है: net: skbuff: frag-transfer सहायकों के माध्यम से shared-frag मार्कर का प्रचार करें दो frag-transfer सहायक (`__pskb_copy_fclone()` और `skb_shift()`) स्रोत से गंतव्य तक frags ले जाते समय `skb_shinfo()->flags` में `SKBFL_SHARED_FRAG` बिट को प्रचारित करने में विफल होते हैं। `__pskb_copy_fclone()` frag डिस्क्रिप्टर की प्रतिलिपि बनाने के बाद बाकी shinfo मेटाडेटा का कार्य `skb_copy_header()` को सौंपता है, लेकिन वह सहायक केवल `gso_{size,segs,type}` को आगे बढ़ाता है और `skb_shinfo()->flags` को कभी नहीं छूता है; `skb_shift()` frag डिस्क्रिप्टर को सीधे स्थानांतरित करता है और flags को अछूता छोड़ देता है। परिणामस्वरूप, गंतव्य skb उन्हीं बाहरी-स्वामित्व या page-cache-समर्थित पृष्ठों का संदर्भ रखता है, जबकि `skb_has_shared_frag()` को false के रूप में रिपोर्ट करता है। यह बेमेल किसी भी in-place लेखक के लिए हानिकारक है जो यह निर्णय लेने के लिए `skb_has_shared_frag()` का उपयोग करता है कि साझा पृष्ठों को `skb_cow_data()` के माध्यम से किसी भिन्न मार्ग से भेजा जाना चाहिए। ESP input ऐसा ही एक लेखक है (`esp4.c`, `esp6.c`), और एक अकेला nft 'dup to <local>' नियम — या कोई भी अन्य `nf_dup_ipv4()` / `xt_TEE` कॉलर — `pskb_copy()`'d skb को मार्कर हटाए जाने के साथ `esp_input()` में पहुँचाने के लिए पर्याप्त है, जिससे एक अनपरिवेषित उपयोक्ता authencesn-ESN stray writes के माध्यम से root-स्वामित्व वाली केवल-पठनीय फ़ाइल के page cache में लिख सकता है। जब भी frag डिस्क्रिप्टर वास्तव में स्रोत से स्थानांतरित किए गए हों, गंतव्य पर `SKBFL_SHARED_FRAG` सेट करें। `skb_copy()` और `skb_copy_expand()` भी `skb_copy_header()` साझा करते हैं लेकिन सभी paged डेटा को नई आवंटित head storage में रैखिक कर देते हैं और `nr_frags == 0` के साथ निकलते हैं, इसलिए `skb_has_shared_frag()` अपने आप false लौटाता है; उन्हें परिवर्तन की आवश्यकता नहीं है। वही चूक `skb_gro_receive()` और `skb_gro_receive_list()` में भी मौजूद है। पहला आने वाले skb के frag डिस्क्रिप्टर को accumulator के अंतिम sub-skb में दो पथों (एक प्रत्यक्ष frag-move लूप और head_frag + memcpy पथ) के माध्यम से स्थानांतरित करता है; दूसरा आने वाले skb को पूरा p के frag_list पर जोड़ देता है। Downstream `skb_segment()` केवल `skb_shinfo(p)->flags` पढ़ता है, और `skb_segment_list()` प्रत्येक sub-skb के shinfo को nskb के रूप में पुन: उपयोग करता है — दोनों p और lp को मार्कर धारण करना चाहिए। यही चूक `tcp_clone_payload()` में भी मौजूद है, जो `sk_write_queue` पर skbs से frag डिस्क्रिप्टर को एक नई आवंटित nskb में स्थानांतरित करके एक MTU probe skb बनाता है। सहायक उसी परिवार में आता है और सामंजस्य के लिए उसी सुधार का हकदार है; वर्तमान में कोई ज्ञात TCP TX-side in-place लेखक इस अंतराल के माध्यम से उपयोक्ता पृष्ठ तक नहीं पहुँचता है, लेकिन मार्कर पर निर्भर भावी उपभोक्ता चुपचाप पीछे हट जाएगा। यही चूक `skb_segment()` में भी मौजूद है: प्रति-पुनरावृत्ति flag merge केवल head_skb के flag को लेता है, और आंतरिक switch जो head_skb-frags समाप्त होने पर `frag_skb` को `list_skb` से पुनः बाँधता है, नए frag_skb के flag को nskb में नहीं जोड़ता। दोनों स्थानों पर frag_skb का flag जोड़ें ताकि frag_list सदस्यों से frags खींचने वाले खंड मार्कर धारण करें।
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।