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

الملخص

بحسب VulDB • 25/09/2026

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

sunvdc: إلغاء تعيين رموز (cookies) LDC عند فشل إرسال الوصف (descriptor).

تقوم الدالة `__send_request()` بتعيين صفحات الطلب في جدول خريطة قناة LDC (`ldc_map_sg()`)، وتعبئة الوصف ووضعه في حالة `VIO_DESC_READY` قبل نقر جرس الباب عبر `__vdc_tx_trigger()`. عند فشل عملية النقر (trigger)، يقتصر مسار الخطأ على طباعة رسالة؛ حيث يبقى الوصف في حالة READY ولا يتم إلغاء تعيين الرموز (cookies) مطلقًا. عادةً ما يُحرر جدول الخريطة في دالة `vdc_end_one()` عندما يكمل الطرف الآخر معالجة الوصف - لكن وصفًا لم تُنقر جرس بابه أبدًا لن يكتمل، وبما أن متغير `dr->prod` لا يتم تقدمه عند الفشل، فإن مسار إعادة التعيين (`vdc_requeue_inflight()`) الذي يتصفح النطاق `[cons, prod)` أيضًا لا يزوره. وبالتالي، تتسرب مدخلات جدول الخريطة بشكل دائم.

نظرًا لأن الالتزام (commit) a11f6ca9aef9 ("sunvdc: عدم الدوران في حلقة غير نهائية عند إرجاع vio_ldc_send() لقيمة EAGAIN") يجعل فشل النقر يحدث عمليًا تحت الحمل، فإن كل خطأ I/O ناتج يؤدي أيضًا إلى تسرب مدخلات تعادل طلب واحد من جدول الخريطة ذي الحجم الثابت (8192 مدخل لكل قناة). وبما أن المخصص (allocator) يمنح نطاقات متجاورة، فإن التجزئة تجعل الطلبات متعددة الأجزاء الكبيرة تفشل أولاً مع استنزاف الجدول، حتى يفشل `ldc_map_sg()` بشكل دائم ويموت القرص حتى إعادة التشغيل.

كما يجعل ذلك أي تعافي يعتمد على المحاولة مجددًا غير صالح للاستخدام: حيث يعيد جدولة الطلب عند حدوث خطأ `-EAGAIN` مما يؤدي إلى تعيين صفحات الذاكرة في كل محاولة، وبالتالي الكتابة فوق `desc->cookies` وترك التعيين السابق يتيمًا (orphaned)، مما يعني أن الجدول يستنزف بمعدل إعادة المحاولة. وهذا هو استنفاد الذاكرة الذي رُصد لأول مرة عند اختبار نهج إعادة الجدولة في أكتوبر 2025.

إجراء التراجع عند الفشل: إلغاء تعيين الرموز، وإعادة وضع الوصف في حالة FREE، ومسح مدخل الطلب. إذا فشل النقر بـ `-ENOTCONN`، فإن `__vdc_tx_trigger()` قد قام بالفعل بإعادة ضبط المنفذ (port)، مما يؤدي إلى تفكيك وإعادة تخصيص كل من dring وقناة LDC بما في ذلك جدول الخريطة الخاص بها - وبالتالي لا يوجد ما يمكن التراجع عنه، ولا يجب لمس الوصف القديم.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

25/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-410135

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!