CVE-2025-38248
bridge: mcast: إصلاح استخدام-بعد-التحرير أثناء تكوين منفذ الموجّه
- تم النشر
- 09/07/2025
- محدث
- 05/08/2026
- تخصيص CNA
- Linux
- الأدلة المرصودة
- 08/08/2026
CVSS الأساسي
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hمنخفض · الثلاثين يومًا القادمة
- المئوية
- 18.5%
- تاريخ الموديل
- 21/09/2026
EPSS هو تقدير إحصائي، وليس يقينًا أو مقياسًا للتأثير. ادمجها مع CVSS وحالة KEV والتعرض وبيئتك.
ملخص
في نواة لينكس، تم حل الثغرة الأمنية التالية: bridge: mcast: إصلاح الاستخدام بعد التحرير (use-after-free) أثناء تكوين منفذ الموجّه (router port) يحتفظ الـ bridge بقائمة عامة بالمنافذ التي يوجد خلفها موجّه بث متعدد (multicast router). يتم الاستعلام عن هذه القائمة أثناء إعادة التوجيه لضمان إعادة توجيه حزم البث المتعدد إلى هذه المنافذ حتى لو لم تكن المنافذ أعضاءً في إدخال 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} وليس السياق لكل منفذ. نتيجة لذلك، سيبقى المنفذ في القائمة العامة لمنافذ الموجّه حتى بعد حذفه. سيؤدي هذا إلى استغلال الاستخدام بعد التحرير [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 وبالمثل، يمكن أيضًا العثور على إدخالات قديمة (stale) في قائمة منافذ الموجّه لكل 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. سيؤدي هذا إلى استغلال الاستخدام بعد التحرير [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 قم بإصلاح هذه المشكلات عن طريق إزالة المنفذ من قائمة منافذ الموجّه ذات الصلة (العامة أو لكل VLAN) في br_multicast_port_ctx_deinit(). يتم استدعاء الدالة أثناء حذف المنفذ مع سياق البث المتعدد لكل منفذ وأثناء حذف 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 ---مقتطع---
الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.