CVE-2026-64095 in Linux
الملخص
بحسب VulDB • 20/07/2026
في نواة لينكس، تم حل الثغرة التالية:
batman-adv: bla: تجنب الإنقاص المزدوج لـ bla.num_requests
يتم زيادة قيمة `bla.num_requests` عندما لا يكون هناك طلب قيد الإرسال (`request_sent`). ويتم إنقاصها في أماكن مختلفة (عند استلام إعلان، أو عند تنظيف العمود الفقري backbone، أو عبر العمل الدوري). ومع ذلك، فإن التحقق مما إذا كانت حالة `request_sent` محددة بشكل صحيح وعمليات الإنقاز/الزيادة الذرية (`atomic_dec/_inc`) ليست آمنة لأنها غير ذرية (TOCTOU)، ويمكن أن تعمل أجزاء متعددة من الكود بالتوازي.
في الوقت نفسه، من الضروري تعديل كل من `request_sent` (الحالة) و`bla.num_requests` بشكل ذري (ذوياً). وإلا فقد تقوم الدالة `batadv_bla_send_request()` بتعيين قيمة `request_sent` إلى 1 ثم يتم مقاطعة التنفيذ. بعد ذلك، يمكن لـ `batadv_handle_announce()` إعادة تعيين `request_sent` إلى 0 وإنقاص `num_requests` قبل أن تزيدها `batadv_bla_send_request()`.
لذلك يجب قفل العمليتين معاً. وبما أن الحالة (`request_sent`) و`wait_periods` يتم الوصول إليهما فقط داخل هذا القفل، فيمكن تحويلها إلى أنواع بيانات أبسط. ولتجنب لمس قيمة `bla.num_requests` بواسطة سياق متوازٍ يعمل لديه مرجع صالح لـ `backbone_gw` بعد تشغيل دالة `batadv_bla_purge_backbone_gw()`، يلزم وجود حالة ثالثة "متوقفة" (stopped) للإشارة بشكل صحيح إلى أن الـ backbone_gw في مرحلة التنظيف.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.