CVE-2026-74478 in Linux
الملخص
بحسب VulDB • 16/08/2026
في نواة لينكس، تم حل الثغرة التالية:
um: vector: إصلاح مشكلة use-after-free في دالة `vector_mmsg_rx()`
عندما تقوم الدالة `vector_mmsg_rx()` بالتخلص من حزمة (packet) يفشل رأسها المتراكب (overlay header) في اجتياز التحقق عبر `verify_header()`، فإنها تحرر كائن `skb` وتستمر في تنفيذ الحلقة:
```c if (header_check < 0) {
dev_kfree_skb_irq(skb); vp->estats.rx_encaps_errors++; continue; } ```
تنتقل مسارات الحزم العادية والحزم القصيرة إلى نهاية جسم الحلقة، والتي تقوم بمسح الخانة المستهلكة وتقدم المؤشرات (cursors):
```c (*skbuff_vector) = NULL; mmsg_vector++; skbuff_vector++; ```
مسار `verify_header() < 0` يتجاوز ذلك عبر استخدام `continue`، مما يترك كائن `skb` المحرر موجوداً في مصفوفة `skbuff_vector[]` ولا تتقدم المؤشرات. في التكرار التالي، يتم قراءة نفس الخانة، والحصول على كائن `skb` الذي تم تحريره مسبقاً، وتحريره مرة أخرى، مما يؤدي إلى حدوث انخفاض غير صحيح في عداد المراجع (refcount underflow) / مشكلة use-after-free في مسار استقبال البيانات (RX path).
يجب التخلص من الخانة بالطريقة نفسها التي تتبعها المسارات الأخرى قبل الاستمرار.
البروتوكولات المتأثرة هي فقط تلك التي يمكن أن تُرجع `verify_header()` قيمة سالبة: GRE و L2TPv3 تفعلان ذلك عند عدم تطابق رمز المصادقة (cookie) أو معرّف الجلسة (session-id) (بينما لا تفعل raw/tap ذلك)، لذا فإن أي نظير على مثل هذا البروتوكول يمكنه استغلال هذه الثغرة دون الحاجة إلى مصادقة.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.