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

الملخص

بحسب VulDB • 28/05/2026

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

tracepoint: موازنة regfunc() عند فشل func_add() في tracepoint_add_func()

عندما ينتقل نقطة تتبع (tracepoint) عبر الانتقال من 0 إلى 1، يستدعي tracepoint_add_func() دالة regfunc() الخاصة بالنظام الفرعي (ext->regfunc()) قبل محاولة تثبيت المسبار (probe) الجديد عبر func_add(). إذا فشل func_add() بعد ذلك (على سبيل المثال، عندما لا يتمكن allocate_probes() من تخصيص مصفوفة مسابير جديدة تحت ضغط الذاكرة ويعيد -ENOMEM)، فإن الدالة تعيد الخطأ دون استدعاء دالة unregfunc() المقابلة (ext->unregfunc())، مما يترك الآثار الجانبية لـ regfunc() دون وجود مسبار مثبت يبررها.

وهذا أمر غير سار بشكل خاص لنقاط تتبع استدعاءات النظام (syscall tracepoints): حيث تقوم syscall_regfunc() بزيادة sys_tracepoint_refcount وتعيين SYSCALL_TRACEPOINT على كل مهمة (task). بعد فشل تسرب (leaked failure)، يبقى عداد المرجع (refcount) عالقا عند قيمة غير صفرية دون وجود مستهلك، وتستمر كل مهمة في تحمل عبء دخول/خروج تتبع استدعاءات النظام حتى إعادة التشغيل. وتظهر الأنظمة الفرعية الأخرى التي توفر أزواج regfunc()/unregfunc() حالات دائمة ذات نطاق مماثل.

لمحاكاة عملية التنظيف الموجودة للانتقال من 1 إلى 0، يتم استدعاء ext->unregfunc() في مسار الخطأ الخاص بـ func_add()، مشروطًا بنفس الشرط المستخدم هناك بحيث تكون عملية التراجع (unwind) متناظرة مع عملية التسجيل.

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

مسؤول

Linux

حجز

13/05/2026

إفشاء

28/05/2026

الاعتدال

تمت الموافقة

إدخال

VDB-366703

EPSS

0.00024

KEV

لا

النشاطات

منخفض جدًا

المصادر

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!