CVE-2026-72444 in Linuxالمعلومات

الملخص

بحسب VulDB • 15/08/2026

في نواة لينكس (Linux kernel)، تم حل الثغرة التالية:

flow_dissector: التحقق من نوع الجهاز قبل قراءة عناوين Ethernet (ETH_ADDRS)

تقوم الدالة `__skb_flow_dissect()` بقراءة 12 بايت بشكل غير مشروط من `eth_hdr(skb)` عند طلب المفتاح `FLOW_DISSECTOR_KEY_ETH_ADDRS`. يفترض هذا أن حزمة البيانات (`skb`) تحتوي على رأس إيثرنت صالح في موقع `mac_header`، وهو ما لا ينطبق دائماً.

يمكن استغلال المشكلة عبر الخطوات التالية: 1. إنشاء جهاز TUN في وضع الطبقة الثالثة (L3 mode) باستخدام العلم IFF_TUN حيث تكون `hard_header_len=0`. 2. ربط مخطط ترتيب أولوية متعدد الطوابق (multiq qdisc) بفلتر زهرة (flower filter) يطابق على حقل المصدر الإيثernetي (`eth_src`). 3. إرسال حزمة عبر واجهة AF_PACKET.

نظراً لأن جهاز TUN في وضع L3 لا يحتوي على رأس للطبقة الوصلية، فإن `mac_header` يشير إلى منطقة بيانات الطبقة الثالثة (L3). يقوم موزع التدفق بقراءة 12 بايت من ذاكرة `skb` غير مُهيأة، والتي تنتشر لاحقاً عبر دالة `fl_set_masked_key()` وتُستخدم كمفتاح للبحث في جدول التجزئة المتساوي القابلية للتوسع (`rhashtable`) داخل الدالة `__fl_lookup()`، كما أبلغت أداة KMSAN.

لا يُعد رفض الفلتر في مسار التحكم (عند إضافة فلتر TC) حلاً عملياً لأن كتل فلاتر TC يمكن مشاركتها بين أجهزة مختلفة -- فقد يتم تثبيت فلتر على جهاز إيثرنت لتصنيف الحزم لاحقاً على جهاز لا يحتوي على رؤوس عبر كتلة مشتركة. ولا تكون ارتباطات الأجهزة ثابتة عند إنشاء الفلتر.

تم إصلاح هذه المشكلة عن طريق وضع شرط (gating) لنسخ الذاكرة (`memcpy`) بحيث يكون `dev->type == ARPHRD_ETHER`، مما يضمن قراءة العناوين فقط للحزم التي تستخدم إطارات إيثرنت حقيقية. هذا الحل أكثر دقة من التحقق السابق الذي كان يعتمد على `hard_header_len >= 12`، والذي كان يسمح بشكل خاطئ بأنواع الطبقة الوصلية غير الإيثernetية مثل IPoIB (`ARPHRD_INFINIBAND`, حيث `hard_header_len=24`) و FDDI (حيث `hard_header_len=21`) لأن رؤوس طبقتها الثانية (L2) ليست بتنسيق إيثرنت. بالإضافة إلى ذلك، يتم التحقق من `skb_mac_header_was_set()` للحماية في الحالة المرضية التي يكون فيها `mac_header` يشير إلى القيمة الحدية غير المُهيأة (`~0U`)، مما كان سيتسبب في إرجاع الدالة `eth_hdr()` لمؤشر عشوائي (wild pointer).

في حالة إعادة التوجيه باستخدام `act_mirred` (إعادة توجيه حزمة إيثرنت إلى جهاز غير إيثرنت يشارك كتلة TC)، فإن تصفير المفتاح هو السلوك الصحيح: حيث يتم تصنيف الحزمة الآن على الجهاز المستهدف، ولا يكون مطابقة عناوين الإيثرنت ذات دلالة منطقية هناك.

ملاحظة: في الأجهزة غير الإيثernetية، سيقوم المفتاح المُصفَّر بمطابقة فلتر مُعدّ بعناوين MAC صفرية تماماً. يُعد هذا تحسناً مقارنة بالسلوك السابق حيث كانت الذاكرة غير المهيأة قد تطابق عشوائياً أي فلتر.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

مسؤول

Linux

حجز

09/08/2026

إفشاء

15/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-390707

EPSS

0.00180

KEV

لا

النشاطات

منخفض

المصادر

Do you need the next level of professionalism?

Upgrade your account now!