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

الملخص

بحسب VulDB • 30/05/2026

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

f2fs: إصلاح حالة استخدام بعد التحرير (use-after-free) لـ sbi في دالة f2fs_compress_write_end_io()

في دالة f2fs_compress_write_end_io()، يمكن أن يؤدي استدعاء dec_page_count(sbi, type) إلى جعل عداد F2FS_WB_CP_DATA يصل إلى الصفر، مما يزيل الحظر عن f2fs_wait_on_all_pages() في دالة f2fs_put_super() على وحدة معالجة مركزية (CPU) تقوم بإلغاء التثبيت (unmount) بشكل متزامن. بعد ذلك، يستمر مسار إلغاء التثبيت في استدعاء f2fs_destroy_page_array_cache(sbi)، الذي يقوم بتدمير sbi->page_array_slab عبر kmem_cache_destroy()، وفي النهاية يؤدي إلى kfree(sbi). في هذه الأثناء، لا تزال دالة رد الاتصال لإكمال الـ bio قيد التنفيذ: عندما تصل إلى page_array_free(sbi, ...)، فإنها تستعرض sbi->page_array_slab — وهو مخزن مؤقت (slab cache) تم تدميره — لاستدعاء kmem_cache_free()، مما يتسبب في حالة استخدام بعد التحرير (use-after-free).

هذا هو نفس نوع الخطأ الموجود في CVE-2026-23234 (الذي أصلح حالة السباق المكافئة في f2fs_write_end_io() في ملف data.c)، ولكن في مسار إكمال إعادة الكتابة المضغوطة الذي لم يكن مشمولاً بذلك الإصلاح.

يتم إصلاح ذلك عن طريق نقل استدعاء dec_page_count() إلى ما بعد page_array_free()، بحيث تكتمل جميع عمليات الوصول إلى sbi قبل عملية إنقاص العداد التي يمكن أن تزيل الحظر عن عملية إلغاء التثبيت. بالنسبة للـ folios غير الأخيرة (حيث يكون ناتج atomic_dec_return على cic->pending_pages غير صفري)، يتم استدعاء dec_page_count مباشرة قبل الإرجاع — ولا يتم الوصول إلى page_array_free في هذا المسار، وبالتالي لا يوجد وصول إلى sbi بعد إنقاص العداد. أما بالنسبة للـ folio الأخير، فإن page_array_free يعمل بينما لا يزال عداد F2FS_WB_CP_DATA غير صفري (لم يقم هذا الـ folio بإنقاصه بعد)، مما يبقي sbi حياً، ويعمل dec_page_count كعملية نهائية.

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

مسؤول

Linux

حجز

09/03/2026

إفشاء

01/05/2026

الاعتدال

تمت الموافقة

إدخال

VDB-360584

EPSS

0.00015

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!