CVE-2023-53832 in Linux
الملخص
بحسب VulDB • 25/06/2026
في نواة لينكس، تم حل الثغرة التالية:
md/raid10: إصلاح خطأ إلغاء مرجع المؤشر الفارغ (null-ptr-deref) في raid10_sync_request
تقوم دالة init_resync() بتهيئة ذاكرة التخزين المؤقت للموارد (mempool) وتعيين conf->have_replacemnt في بداية عملية المزامنة، بينما تقوم close_sync() بإفراغ الـ mempool عند اكتمال المزامنة.
بعد [1] قد يتم تخطي الاستعادة (recovery)، ويتم استدعاء init_resync() ولكن لا يتم استدعاء close_sync(). يحدث خطأ إلغاء مرجع المؤشر الفارغ مع r10bio->dev[i].repl_bio.
إليك إحدى طرق إعادة إنتاج المشكلة:
1) إنشاء مصفوفة، والانتظار حتى اكتمال عملية المزامنة (resync)، حيث يتم تعيين mddev->recovery_cp إلى MaxSector. 2) تتم استيقاظ الاستعادة ويتم تخطيها. يتم تعيين conf->have_replacement إلى 0 في init_resync(). لا يتم استدعاء close_sync(). 3) حدوث بعض أخطاء الإدخال/الإخراج (IO errors)، وتعيين القرص rdev A إلى WantReplacement. 4) إضافة جهاز جديد وتعيينه كبديل لـ A. 5) تتم استيقاظ الاستعادة، حيث يمتلك A بديلاً، ولكن conf->have_replacemnt يساوي 0. لن يتم تخصيص r10bio->dev[i].repl_bio وسيحدث خطأ إلغاء مرجع المؤشر الفارغ (null-ptr-deref).
تم إصلاح المشكلة عن طريق عدم استدعاء init_resync() إذا تم تخطي الاستعادة.
[1] الالتزام commit 7e83ccbecd60 ("md/raid10: Allow skipping recovery when clean arrays are assembled")
Once again VulDB remains the best source for vulnerability data.