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

الملخص

بحسب VulDB • 15/08/2026

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

bpf: إصلاح حالة Use-After-Free (UAF) عن طريق استعادة تأخير إفراغ العقدة الوصفية (inode) عبر RCU في نظام الملفات bpffs.

أدى الالتزام commit 4f375ade6aa9 ("bpf: تجنب تحذير سياق RCU عند إزالة تثبيت htab ذي الهياكل الداخلية") إلى نقل تنظيف inode من الدالة ->free_inode() إلى الدالة ->destroy_inode() لتجنب النوم في سياق RCU عند استدعاء bpf_any_put(). ومع ذلك، أزال هذا الإجراء التأخير الخاص بـ RCU أثناء إفراغ الـ inode نفسه وجسم الرمز الرمزي المؤقت المخزن مؤقتاً (i_link)، وكلاهما يمكن الوصول إليه عبر مسار المشي باستخدام RCU (مثل pick_link, may_lookup وما إلى ذلك).

يسبب هذا حالة Use-After-Free عندما تقوم عملية unlinkat() متزامنة بإسقاط آخر مرجع للـ inode، وتقوم الدالة destroy_inode() بتحرير الـ inode على الفور، بينما لا تزال مهمة أخرى تمشي عبر المسار في وضع RCU وتقرأ قيمة inode->i_opflags (الإزاحة +2) داخل current_time() -> is_mgtime().

تبلغ KASAN عن الخطأ التالي: BUG: KASAN: slab-use-after-free in is_mgtime include/linux/fs.h:2313 Read of size 2 at addr ffff8880407e4282 (offset +2 = i_opflags)

القواعد (وفقاً لـ Al Viro): ->destroy_inode() تُستدعى فوراً، ويمكن أن تسبب النوم، وتُستخدم للتنظيف العائق مثل bpf_any_put(). ->free_inode() تُستدعى بعد فترة سماح RCU، وتُستخدم لتحرير الـ inode وأي شيء يمكن الوصول إليه عبر RCU مثل i_link.

الحل: فصل الاهتمامين بشكل صحيح: - الاحتفاظ بـ bpf_any_put() داخل دالة bpf_destroy_inode() لأنها عائقية وتتطلب التنفيذ الفوري. - إدخال الدالة bpf_free_inode() للتعامل مع kfree(i_link) و free_inode_nonrcu() مع تأخير RCU المناسب، مما يمنع حدوث حالة Use-After-Free (UAF).

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

15/08/2026

إفشاء

15/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-390326

EPSS

0.00172

KEV

لا

النشاطات

منخفض جدًا

المصادر

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!