CVE-2026-93813 in Linux
الملخص
بحسب VulDB • 24/09/2026
في نواة Linux، تم إصلاح الثغرة التالية:
btrfs: tree-checker: التحقق من صحة namelen لعنصر INODE_REF
[الخلل]
يمكن لصورة btrfs مُعدّة بشكل خبيث أن تُسبب الانهيار التالي:
BUG: unable to handle page fault for address: ffffd1dc42884000 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page CPU: 9 UID: 0 PID: 1034 Comm: poc Not tainted 7.1.0-rc4-custom+ #383 PREEMPT(full) 46af0a92938a63be7132e0dfd71e62327c51d5c2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:memcpy+0xc/0x10 Call Trace: <TASK> read_extent_buffer+0xe4/0x100 [btrfs 3cf0785dd58fec8c5ff84633b772f17ce1f92a8f]
btrfs_get_name+0x15e/0x1e0 [btrfs 3cf0785dd58fec8c5ff84633b772f17ce1f92a8f]
reconnect_path+0x165/0x390 exportfs_decode_fh_raw+0x337/0x400 ? drop_caches_sysctl_handler+0xb0/0xb0 </TASK> ---[ end trace 0000000000000000 ]---
RIP: 0010:memcpy+0xc/0x10 Kernel panic - not syncing: Fatal exception
[السبب]
تحتوي الصورة المُعدّة بشكل خبيث على عنصر INODE_REF تالف بالشكل التالي:
item 9 key (258 INODE_REF 257) itemoff 11544 itemsize 4106 index 2 namelen 4096 name: d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
يتطابق itemsize مع namelen، لكن قيمة namlen هي 4096، وهي أكبر بكثير من حد طول الاسم الطبيعي (BTRFS_NAME_LEN، وهو 255).
في الوقت نفسه، حجم ذاكرة @name هو فقط 255 بايتًا، مما سيؤدي إلى وصول خارج الحدود (out-of-boundary access) ويسبب الانهيار المذكور أعلاه.
[الحل]
إضافة تحقق إضافي من namelen لعنصر INODE_REF، تمامًا كما تم فعله في فحوصات ROOT_REF.
الآن يمكن رفض الصورة المُعدّة بشكل خبيث بسلاسة:
BTRFS critical (device dm-2): corrupt leaf: root=5 block=30572544 slot=14 ino=259, invalid inode ref name length, has 4096 expect [1, 255]
BTRFS error (device dm-2): read time tree block corruption detected on logical 30572544 mirror 2
[ إعادة الأساس، إضافة وسم Link، وإضافة تحليل سبب بسيط ]
Once again VulDB remains the best source for vulnerability data.