CVE-2025-38248
bridge: mcast: राउटर पोर्ट कॉन्फ़िगरेशन के दौरान use-after-free को ठीक करें
- प्रकाशित
- 9 जुल॰ 2025
- अद्यतन
- 5 अग॰ 2026
- सीएनए असाइन करना
- Linux
- साक्ष्य देखे गए
- 8 अग॰ 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 दिन
- प्रतिशत
- 18.5%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
Linux कर्नेल में, निम्नलिखित भेद्यता को हल किया गया है: bridge: mcast: राउटर पोर्ट कॉन्फ़िगरेशन के दौरान use-after-free को ठीक करें Linux ब्रिज उन पोर्ट्स की एक वैश्विक सूची बनाए रखता है जिनके पीछे एक मल्टीकास्ट राउटर स्थित होता है। फ़ॉरवर्डिंग के दौरान इस सूची का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि मल्टीकास्ट पैकेट इन पोर्ट्स पर फ़ॉरवर्ड किए जाएं, भले ही पोर्ट संबंधित MDB प्रविष्टि के सदस्य न हों। जब प्रति-VLAN मल्टीकास्ट स्नूपिंग सक्षम होती है, तो प्रत्येक पोर्ट पर प्रति-पोर्ट मल्टीकास्ट संदर्भ अक्षम कर दिया जाता है और पोर्ट को वैश्विक राउटर पोर्ट सूची से हटा दिया जाता है: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 # ip link add name dummy1 up master br1 type dummy # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 1 $ bridge -d mdb show | grep router हालाँकि, पोर्ट को वैश्विक सूची में फिर से जोड़ा जा सकता है, भले ही प्रति-VLAN मल्टीकास्ट स्नूपिंग सक्षम हो: # ip link set dev dummy1 type bridge_slave mcast_router 0 # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 कमिट 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions") के बाद से, जब प्रति-VLAN मल्टीकास्ट स्नूपिंग सक्षम होती है, तो पोर्ट पर मल्टीकास्ट अक्षमीकरण प्रति-{पोर्ट, VLAN} मल्टीकास्ट संदर्भों को अक्षम करेगा, न कि प्रति-पोर्ट संदर्भ को। परिणामस्वरूप, एक पोर्ट हटाए जाने के बाद भी वैश्विक राउटर पोर्ट सूची में बना रहेगा। इससे use-after-free [1] होगा जब सूची को ट्रैवर्स किया जाता है (उदाहरण के लिए, सूची में एक नया पोर्ट जोड़ते समय): # ip link del dev dummy1 # ip link add name dummy2 up master br1 type dummy # ip link set dev dummy2 type bridge_slave mcast_router 2 इसी तरह, पुरानी प्रविष्टियाँ प्रति-VLAN राउटर पोर्ट सूची में भी पाई जा सकती हैं। जब प्रति-VLAN मल्टीकास्ट स्नूपिंग अक्षम होती है, तो प्रत्येक पोर्ट पर प्रति-{पोर्ट, VLAN} संदर्भ अक्षम कर दिए जाते हैं और पोर्ट को प्रति-VLAN राउटर पोर्ट सूची से हटा दिया जाता है: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 # ip link add name dummy1 up master br1 type dummy # bridge vlan add vid 2 dev dummy1 # bridge vlan global set vid 2 dev br1 mcast_snooping 1 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 0 $ bridge vlan global show dev br1 vid 2 | grep router हालाँकि, पोर्ट को प्रति-VLAN सूची में फिर से जोड़ा जा सकता है, भले ही प्रति-VLAN मल्टीकास्ट स्नूपिंग अक्षम हो: # bridge vlan set vid 2 dev dummy1 mcast_router 0 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 जब VLAN को पोर्ट से हटा दिया जाता है, तो प्रति-{पोर्ट, VLAN} मल्टीकास्ट संदर्भ अक्षम नहीं होगा क्योंकि VLAN पर मल्टीकास्ट स्नूपिंग सक्षम नहीं है। परिणामस्वरूप, पोर्ट VLAN में सदस्य न रहने के बाद भी प्रति-VLAN राउटर पोर्ट सूची में बना रहेगा। इससे use-after-free [2] होगा जब सूची को ट्रैवर्स किया जाता है (उदाहरण के लिए, सूची में एक नया पोर्ट जोड़ते समय): # ip link add name dummy2 up master br1 type dummy # bridge vlan add vid 2 dev dummy2 # bridge vlan del vid 2 dev dummy1 # bridge vlan set vid 2 dev dummy2 mcast_router 2 इन समस्याओं को br_multicast_port_ctx_deinit() में पोर्ट को संबंधित (वैश्विक या प्रति-VLAN) राउटर पोर्ट सूची से हटाकर ठीक करें। यह फ़ंक्शन पोर्ट विलोपन के दौरान प्रति-पोर्ट मल्टीकास्ट संदर्भ के साथ और VLAN विलोपन के दौरान प्रति-{पोर्ट, VLAN} मल्टीकास्ट संदर्भ के साथ लागू किया जाता है। ध्यान दें कि मल्टीकास्ट राउटर टाइमर को हटाना पर्याप्त नहीं है क्योंकि यह केवल अस्थायी मल्टीकास्ट राउटर अवस्थाओं (1 या 3) का ध्यान रखता है, न कि स्थायी अवस्था (2) का। [1] BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560 Write of size 8 at addr ffff888004a67328 by task ip/384 [...] Call Trace: <TASK> dump_stack ---truncated---
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।