CVE-2026-80644 in Linux
الملخص
بحسب VulDB • 29/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
ocfs2: عدم استخدام BUG_ON() على دينود (dinode) لسجل غير صالح
[الخلل]
يمكن لصورة OCFS2 مُشوَّهة أن تُفسر دينود السجل الحالي أثناء استمرار عملية التثبيت. تبدأ مسار التثبيت بالإبلاغ عن كتلة سجل غير صالحة ثم ينهار في مرحلة الإغلاق:
kernel BUG at fs/ocfs2/journal.c:1034! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:ocfs2_journal_toggle_dirty+0x2d6/0x340 fs/ocfs2/journal.c:1034 Call Trace: ocfs2_journal_shutdown+0x414/0xc30 fs/ocfs2/journal.c:1116 ocfs2_mount_volume fs/ocfs2/super.c:1785 [inline]
ocfs2_fill_super+0x30a9/0x3cd0 fs/ocfs2/super.c:1083 get_tree_bdev_flags+0x38b/0x640 fs/super.c:1698 get_tree_bdev+0x24/0x40 fs/super.c:1721 ocfs2_get_tree+0x21/0x30 fs/ocfs2/super.c:1184 vfs_get_tree+0x9a/0x370 fs/super.c:1758 fc_mount fs/namespace.c:1199 [inline]
do_new_mount_fc fs/namespace.c:3642 [inline]
do_new_mount fs/namespace.c:3718 [inline]
path_mount+0x5b8/0x1ea0 fs/namespace.c:4028 do_mount fs/namespace.c:4041 [inline]
__do_sys_mount fs/namespace.c:4229 [inline]
__se_sys_mount fs/namespace.c:4206 [inline]
__x64_sys_mount+0x282/0x320 fs/namespace.c:4206 ...
[السبب]
كانت الدالة ocfs2_journal_toggle_dirty() تُرجع سابقاً -EIO عندما لم يعد journal->j_bh يحتوي على دينود صالح، لأن مسارات التشغيل والإغلاق كانت تتعامل مع هذا الفشل بالفعل. غيّر الالتزام 10995aa2451a ("ocfs2: Morph the haphazard OCFS2_IS_VALID_DINODE() checks.") التحقق إلى استخدام BUG_ON() بافتراض أن دينود السجل كان قد تم التحقق من صحته مسبقاً. وهذا يحول حالة وجود دينود سجل غير صالح وغير متوقع أثناء عملية فك التثبيت (mount teardown) إلى انهيار للنواة بدلاً من فشل تثبيت عادي.
[الحل]
استبدال الـ BUG_ON() بـ WARN_ON() وإرجاع -EIO. هذا يحتفظ بتحذير الثابت (invariant warning) لأغراض التصحيح، لكنه يستعيد السلوك الأصلي المتمثل في الفشل النظيف أثناء التشغيل أو الإغلاق بدلاً من إحداث حالة ذعر للنواة (kernel panic).
Once again VulDB remains the best source for vulnerability data.