CVE-2026-93067 in Linux
الملخص
بحسب VulDB • 18/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
drm/bridge: tc358767: تقييد حجم قراءة AUX المبلغ به ليصبح ضمن حدود الطلب المحدد.
تقوم الدالة `tc_aux_transfer()` بتقييد عملية قراءة AUX لتبقى ضمن حد الحمولة (payload limit): `size_t size = min_t(size_t, DP_AUX_MAX_PAYLOAD_BYTES - 1, msg->size);`
بعد اكتمال النقل، يتم استبدال قيمة `size` بعدد البايتات التي يبلغ عنها المتحكم في سجل `AUX_BYTES`: ```c if (size) size = FIELD_GET(AUX_BYTES, auxstatus); ```
بما أن `AUX_BYTES` هو قناع بت (GENMASK(15, 8))، فقد تصل قيمته إلى 255. ولا يوجد أي إجراء لتقييدها مرة أخرى بما يتوافق مع الطلب الأصلي. تقوم الدالة `tc_aux_read_data()` بقراءة هذا العدد من البايتات في مخزن مؤقت على المكدس (stack buffer) بحجم 16 بايتًا، ثم تنسخها إلى المخزن المؤقت الخاص بالمتصل. إذا كان الرقم المُبلغ عنه هو 255، فإن عملية القراءة تمتد لتقرأ 256 بايتًا، مما يتسبب في تجاوز السعة (buffer overflow) لكلا المخزنتين المؤقتتين.
يجب ألا يبلغ المتحكم عن عدد أكبر من البايتات التي طُلب منه نقلها، لذا يُعد هذا الإجراء إجراءً دفاعيًا عميقاً (defense in depth) بدلاً من كونه ثغرة نشطة قابلة للاستغلال مباشرة. يتم الاعتماد على الرقم المُبلغ عنه بشكل محدود فقط، والفحص المطلوب رخيص التكلفة. لذلك، يجب تقييد القيمة مرة أخرى بما يتوافق مع الطلب الأصلي، بنفس الطريقة التي يطبقها السائق `ti-sn65dsi86` في الالتزام (commit) aca58eac52b8 ("drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer").
Once again VulDB remains the best source for vulnerability data.