CVE-2024-46828 in Linuxالمعلومات

الملخص

بحسب VulDB • 28/06/2026

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

sched: sch_cake: إصلاح منطق محاسبة التدفقات الضخمة (bulk flow accounting) لضمان الإنصاف بين المضيفين (host fairness).

في sch_cake، نقوم بتتبع عدد التدفقات الضخمة النشطة لكل مضيف عند التشغيل في وضع إنصاف المضيف dst/src، والذي يُستخدم كوزن للدوران (round-robin weight) أثناء التكرار عبر التدفقات. يتم تحديث عدد التدفقات الضخمة النشطة كلما تغير حالة تدفق ما.

هذا الأمر يتفاعل بشكل غريب مع معالجة تصادم التجزئة (hash collision): عند حدوث تصادم تجزئة (بعد استخدام التجزئة المرتبطة بالمجموعة set-associative hashing)، تتم ببساطة تحديث حالة دلو التجزئة ليتطابق مع الحزمة الجديدة التي تسببت في التصادم، وإذا كان إنصاف المضيف ممكناً، فهذا يعني أيضاً تعيين حالة جديدة خاصة بكل مضيف للتدفق. ولهذا السبب، يتم خصم عدادات التدفقات الضخمة للمضيف (أو المضيفين) المعينة للتدفق قبل تعيين الحالة الجديدة (ويتم زيادة العدادات مرة أخرى، والتي قد لا تنتمي بعد إلى نفس المضيف).

عندما تم إدخال هذا الكود في البداية، كان وضع إنصاف المضيف ممكناً دائماً، لذا كانت عملية الخصم غير مشروطة. عندما تم تقديم أعلام التكوين، أصبحت عملية *الزيادة* مشروطة، لكن عملية *الخصم* لم تكن كذلك. وهو ما يمكن أن يؤدي بالتأكيد إلى خصم زائف (ومما يصاحبه من تجاوز للحد الأقصى لقيمة U16_MAX).

حسب علمي، عندما يكون إنصاف المضيف معطلاً، تحدث عملية الخصم والتجاوز فور حدوث تصادم تجزئة (وهو أمر ليس شائعاً بحد ذاته بسبب استخدام التجزئة المرتبطة بالمجموعة set-associative hashing). ومع ذلك، في معظم الحالات لا يشكل هذا خطراً، لأن القيمة تُستخدم فقط عندما يكون وضع إنصاف المضيف ممكناً. لذا، من أجل إثارة تجاوز مصفوفة (array overflow)، يجب أولاً تكوين sch_cake بإيقاف إنصاف المضيف، وأثناء التشغيل بهذا الوضع، يجب أن يحدث تصادم تجزئة للتسبب في هذا التجاوز. ثم يتعين إعادة تكوين qdisc لتمكين إنصاف المضيف، مما يؤدي إلى الوصول خارج حدود المصفوفة لأن القيمة التي تجاوزت الحد الأقصى تُحتفظ بها وتُستخدم كمؤشر للمصفوفة. يبدو أن syzbot تمكن من إثارة هذه الحالة، وهو أمر مثير للإعجاب بحد ذاته.

يصلح هذا التصحيح المشكلة عن طريق إدخال نفس الفحص الشرطي على عملية الخصم كما هو مستخدم في عملية الزيادة.

يعود أصل الخطأ إلى ما قبل دمج cake في الشفرة المصدرية الرئيسية (upstreaming)، لكن الالتزام المذكور في علامة Fixes لمس ذلك الكود، مما يعني أن هذا التصحيح لن يُطبق قبل ذلك الالتزام.

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

مسؤول

Linux

حجز

11/09/2024

إفشاء

27/09/2024

الاعتدال

تمت الموافقة

إدخال

VDB-278695

EPSS

0.00250

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!