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

الملخص

بحسب VulDB • 25/09/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

net: تحديد حد أقصى لـ tx_queue_len عند S16_MAX لمنع تخصيص حلقات (rings) بحجم مفرط.

تقوم عدة أنظمة فرعية بتخصيص مخازن مؤقتة للحلقة (ring buffers) بناءً على حجم `dev->tx_queue_len` دون وجود حد أعلى. يمكن لمستخدم غير متميز الصلاحيات (عبر الأمر `unshare -Urn`) تعيين قيمة ضخمة لـ `tx_queue_len` واستنفاد الذاكرة العالمية من خلال تخصيص الحلقات:

- pfifo_fast: تقوم الدالتان `pfifo_fast_init()` و `pfifo_fast_change_tx_queue_len()` بتخصيص 3 حلقات من مصفوفات skb، بحجم يساوي عدد مدخلات tx_queue_len لكل منها. - tun: تعيد دالة `tun_queue_resize()` ومسار إرفاق الطابور (queue-attach) ضبط أحجام ptr_rings لتتناسب مع tx_queue_len عند إشعار NETDEV_CHANGE_TX_QUEUE_LEN. - tap (macvtap/ipvtap): تعيد دالتا `tap_queue_resize()` و `tap_init()` ضبط/تهيئة أحجام ptr_rings لتناسب tx_queue_len عند نفس الإشعار.

تُعد `netif_change_tx_queue_len()` نقطة الدخول الوحيدة لـ IFLA_TXQLEN، ونظام الملفات sysfs، وأمر ioctl SIOCSIFTXQLEN. يتم تحديد الحد الأقصى للقيمة الجديدة (new_len) عند S16_MAX (32767) هناك بحيث تُرفض القيم المفرطة في الحجم أثناء وقت التعيين. يسري هذا التأثير سواء كان الجهاز قيد التشغيل أو الإيقاف، قبل كتابة `dev->tx_queue_len`، وقبل إشعار أي من الإشعارات (notifiers)، وقبل تخصيص أي حلقة. كما أن فحص "> S16_MAX" يغطي أيضاً اختبار التقصير السابق لـ unsigned-long، والقيمة السالبة lfr_qlen القادمة من أمر ioctl ترتفع إلى ما بعد الحد الأقصى المقبول بعد التحويل، لذا فإن كلا وضعي الفشل القديمين مغطيان بواسطة مقارنة واحدة.

تعتبر `tx_queue_len` غامضة: فهي تعمل كعامل مضاعف لحجم الحلقة الواحدة، وكعقدة ضبط/حد لطول الطابور الافتراضي للمستهلكين الذين لا يقومون بتخصيص أي شيء عند وقت التعيين (مثل حدود pfifo/bfifo/gred/plug/sfb، و htb direct_qlen، و qfq max_classes، و teql). تم اختيار القيمة 32767 كأعلى قيمة يمكن لـ NLA_POLICY_FULL_RANGE التعبير عنها في سياسة u32 IFLA_TXQLEN ضمن الإصدار البرمجي patch 2/3، مع الحفاظ على كونها طول طابور شرعي للمسارات ذات معدل الإنتاجية-التأخير (BDP) العالي؛ ويتم الكشف عن مقايضة ذاكرة الحلقة الخاصة بالعقدة المشتركة أدناه.

الشروط لإعادة إنتاج الخطأ: - CONFIG_NET_SCHED=y, CONFIG_VETH=y, CONFIG_USER_NS=y, CONFIG_NET_NS=y. - مستخدم غير متميز الصلاحيات في مساحة اسم جديدة للمستخدم والشبكة (unshare -Urn). - pfifo_fast: إنشاء أزواج veth، تعيين tx_queue_len إلى 500000، وإرفاق mq+pfifo_fast. يؤدي حوالي 28 تكراراً إلى استنفاد الذاكرة (OOM) في بيئة افتراضية بسعة 2 جيجابايت. - tun: إنشاء 50 جهاز tun مع IFF_MULTI_QUEUE، تعيين tx_queue_len إلى 500000، وفتح 8 طوابير لكل منها. يؤدي تخصيص ptr_ring بحجم حوالي 1.6 جيجابايت إلى استنفاد الذاكرة (OOM) في بيئة افتراضية بسعة 512 ميجابايت. - tap: نفس الإعدادات الخاصة بـ tun مع IFF_TAP. يؤدي حجم يقارب 960 ميجابايت من تخصيص ptr_ring إلى استنفاد الذاكرة (OOM) في بيئة افتراضية بسعة 512 ميجابايت. - على النواة المصححة، يتم رفض قيمة tx_queue_len المفرطة في الحجم بـ -ERANGE عند وقت التعيين (في جميع المسارات الأربعة: RTM_SETLINK، وخلق RTM_NEWLINK، sysfs، ioctl؛ حيث يغطي الاثنان الأخيريان هذا الفحص مباشرةً، بينما يغطى الأولان عبر هذا الفحص وسياسة التحليل 2/3 على التوالي).

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

25/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-410052

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!