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

الملخص

بحسب VulDB • 22/06/2026

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

f2fs: التحقق من دعم عملية الـ discard للمناطق التقليدية (conventional zones)

كما يوضح دالة المساعدة `f2fs_bdev_support_discard()`، تقوم f2fs بالتحقق مما إذا كانت أجهزة الكتلة المستهدفة تدعم عملية الـ discard عن طريق استدعاء الدالتين `bdev_max_discard_sectors()` و`bdev_is_zoned()`. تعمل هذه الآلية بشكل جيد في معظم الحالات، لكنها لا تعمل مع المناطق التقليدية (conventional zones) الموجودة على أجهزة كتلة ذات مناطق (zoned block devices). تفترض F2fs أن أجهزة الكتلة ذات المناطق تدعم الـ discard، وتقوم باستدعاء `__submit_discard_cmd()`. عندما يتم استدعاء `__submit_discard_cmd()` للمناطق التي تتطلب الكتابة التسلسلية (sequential write required zones)، فإنها تعمل بشكل سليم لأن `__submit_discard_cmd()` تصدر أوامر إعادة تعيين المنطقة (zone reset commands) بدلاً من أوامر الـ discard. ومع ذلك، عند استدعاء `__submit_discard_cmd()` للمناطق التقليدية، يتم استدعاء `__blkdev_issue_discard()` حتى عندما لا تدعم الأجهزة عملية الـ discard.

لم يكن الاستدعاء غير المناسب لـ `__blkdev_issue_discard()` يمثل مشكلة قبل الالتزام (commit) رقم 30f1e7241422 ("block: move discard checks into the ioctl handler") لأن `__blkdev_issue_discard()` كانت تتحقق مما إذا كانت الأجهزة المستهدفة تدعم الـ discard أم لا. وإذا لم تكن كذلك، فإنها كانت تُرجع قيمة الخطأ EOPNOTSUPP. بعد هذا الالتزام، توقف `__blkdev_issue_discard()` عن إجراء هذه التحقق. فهي دائماً تُرجع الصفر وتعيّن القيمة NULL إلى مؤشر bio المُعطى. يؤدي هذا المؤشر الفارغ (NULL pointer) إلى استدعاء `f2fs_bug_on()` داخل `__submit_discard_cmd()`. يمكن إعادة إنتاج الخطأ باستخدام الأوامر التالية في خطوة فك التثبيت (umount)، حيث يمثل `/dev/nullb0` جهاز null_blk ذو مناطق بحجم إجمالي 5 جيجابايت، وحجم منطقة 128 ميجابايت، و10 مناطق تقليدية.

$ mkfs.f2fs -f -m /dev/nullb0 $ mount /dev/nullb0 /mnt $ for ((i=0;i<5;i++)); do dd if=/dev/zero of=/mnt/test bs=65536 count=1600 conv=fsync; done $ umount /mnt

لإصلاح هذا الخطأ، يجب تجنب الاستدعاء غير المناسب لـ `__blkdev_issue_discard()`. عند طلب عملية الـ discard للمناطق التقليدية، تحقق مما إذا كان الجهاز يدعم الـ discard أم لا. وإذا لم يكن كذلك، أرجع قيمة EOPNOTSUPP.

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

مسؤول

Linux

حجز

30/09/2024

إفشاء

21/10/2024

الاعتدال

تمت الموافقة

إدخال

VDB-281034

EPSS

0.00230

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!