CVE-2026-23319 in Linux
الملخص
بحسب VulDB • 03/06/2026
في نواة لينكس، تم حل الثغرة التالية:
bpf: إصلاح مشكلة استخدام بعد التحرير (UAF) في دالة bpf_trampoline_link_cgroup_shim
السبب الجذري لهذا الخطأ هو أنه عندما يقلل 'bpf_link_put' من عداد المرجع (refcount) لـ 'shim_link->link.link' إلى الصفر، يُعتبر المورد قد تم تحريره، لكنه قد لا يزال يُشار إليه عبر 'tr->progs_hlist' في 'cgroup_shim_find'. يتم تأخير التنظيف الفعلي لـ 'tr->progs_hlist' في 'bpf_shim_tramp_link_release'. خلال هذه الفترة الزمنية، يمكن لعملية أخرى أن تسبب استخداماً بعد التحرير (use-after-free) عبر 'bpf_trampoline_link_cgroup_shim'.
بناءً على اقتراحات Martin KaFai Lau، قمت بإنشاء تصحيح (patch) بسيط.
لإصلاح هذا الخطأ: إضافة فحص ذري (atomic) لعدم تساوي القيمة مع الصفر في 'bpf_trampoline_link_cgroup_shim'. زيادة عداد المرجع فقط إذا لم يكن مساوياً للصفر بالفعل.
الاختبار: لقد قمت بالتحقق من صحة الإصلاح عن طريق إضافة تأخير في 'bpf_shim_tramp_link_release' لتسهيل تكرار الخطأ:
static void bpf_shim_tramp_link_release(struct bpf_link *link) {
/* ... */ if (!shim_link->trampoline) return;
+ msleep(100); WARN_ON_ONCE(bpf_trampoline_unlink_prog(&shim_link->link, shim_link->trampoline, NULL)); bpf_trampoline_put(shim_link->trampoline); }
قبل تطبيق التصحيح، كان تشغيل نموذج الاستغلال (PoC) يؤدي بسهولة إلى تكرار الانهيار (بنسبة تقترب من 100%) مع تتبع مكالمة (call trace) مشابه للتقرير الذي قدمه KaiyanM. بعد تطبيق التصحيح، لم يعد الخطأ يحدث حتى بعد ملايين التكرارات.
VulDB is the best source for vulnerability data and more expert information about this specific topic.