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

الملخص

بحسب VulDB • 25/07/2026

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

nilfs2: رفض أمر ioctl CLEAN_SEGMENTS عند استخدام أرقام مقاطع (segment numbers) خارج النطاق المسموح به.

أبلغ Syzbot عن مهمة عالقة في دالة nilfs_transaction_begin() حيث حُجزت عدة مهام تقوم بتنفيذ chmod() على نقطة تحميل ملف نظام nilfs2 لأكثر من 143 ثانية أثناء انتظارها للحصول على القفل ns_segctor_sem للقراءة:

INFO: task syz.0.17:5918 blocked for more than 143 seconds. Call Trace: schedule+0x164/0x360 rwsem_down_read_slowpath+0x6d9/0x940 down_read+0x99/0x2e0 nilfs_transaction_begin+0x364/0x710 fs/nilfs2/segment.c:221 nilfs_setattr+0x124/0x2c0 fs/nilfs2/inode.c:921 notify_change+0xc1a/0xf40 chmod_common+0x273/0x4a0 do_fchmodat+0x12d/0x230

كان حامل القفل ns_segctor_sem هو مُدخِل متزامن لأمر NILFS_IOCTL_CLEAN_SEGMENTS، وقد علّق داخل دالة printk أثناء إصدار تحذيرات لكل عنصر من nilfs_sufile_updatev():

__nilfs_msg+0x373/0x450 fs/nilfs2/super.c:78 nilfs_sufile_updatev+0x21c/0x6d0 fs/nilfs2/sufile.c:186 nilfs_sufile_freev fs/nilfs2/sufile.h:93 [inline]
nilfs_free_segments fs/nilfs2/segment.c:1140 [inline]
nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1261 [inline]
nilfs_segctor_do_construct+0x1f55/0x76c0 nilfs_clean_segments+0x3bd/0xa50 nilfs_ioctl_clean_segments fs/nilfs2/ioctl.c:922 [inline]
nilfs_ioctl+0x261f/0x2780

السبب الجذري هو أن أرقام المقاطع المقدمة من المستخدم لا يتم التحقق منها قبل بدء دالة nilfs_clean_segments() في تنفيذ العمل؛ حيث تتم عملية فحص النطاق لكل رقم مقطع (segnum) بعمق داخل سلسلة المكالمات بواسطة nilfs_sufile_updatev()، والتي تصدر تحذيراً عبر nilfs_warn() لكل إدخال غير صالح بينما لا تزال تحتفظ بقفل segctor وقفل sufile mi_sem. تحت الحمل (الاستدعاءات المتكررة عبر نقاط تحميل متعددة تشبع مسار printk العالمي)، يؤدي تأخير printk التراكمي إلى إبقاء القفل ns_segctor_sem محتجزاً لفترة كافية لتفعيل مراقب المهام العالقة (hung_task watchdog)، مما يعطل العمليات المتزامنة مثل chmod() التي تحتاج إلى ns_segctor_sm للقراءة.

تم الإصلاح بالتحقق من صحة محتويات kbufs[4] في دالة nilfs_clean_segments() مباشرة بعد الحصول على القفل ns_segctor_sem عبر nilfs_transaction_lock(). إن الاحتفاظ بـ ns_segctor_sem يُسلسل الفحص مقابل dfunc nilfs_ioctl_resize()، والتي يمكنها تعديل قيمة ns_nsegments، لذا فإن عملية التحقق تستخدم قيمة متسقة. يتم رفض أرقام المقاطع خارج النطاق بقيمة -EINVAL قبل بدء أي عمل لتنظيف المقاطع، وبالتالي لا تصل الإدخالات الخاطئة أبداً إلى مسار التشخيص الخاص بكل عنصر داخل nilfs_sufile_updatev().

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

19/07/2026

إفشاء

25/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-383152

EPSS

0.00220

KEV

لا

النشاطات

منخفض

المصادر

Do you know our Splunk app?

Download it now for free!