CVE-2026-80802 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfc: fdp: تحديد طول القراءة الذي يبلغه الجهاز وإصلاح تسرب (leak) لـ skb
تأخذ الدالة `fdp_nci_i2c_read()` طول الحزمة القادمة من بايتين يوفرهما الجهاز دون التحقق منهما. تُستخدم هذه القيمة كعدد صحيح غير موقّع 16 بت (`u16`) كمعامل استدعاء لدالة `i2c_master_recv()` لكتابة بيانات في مخزن مؤقت (buffer) بحجم 261 بايت موجود على المكدس (stack). يمكن لجهاز تحكم خبيث، أو مزيف، أو معطل (أو حتى جهاز وسيط على حافلة I2C)، دفع هذا الطول إلى ما هو أبعد بكثير من حدود المخزن المؤقت، مما يؤدي إلى كتابة خارج نطاق المكدس (stack out-of-bounds write) التي تُفسد قيمة الكاناري (canary) وعنوان الإرجاع (return address). أو يمكن أن يكون الطول أقل من الحد الأدنى لحجم الإطار (بشكل مباشر، أو عن طريق اختصار المجمعة المحسوبة)، مما يجعل شريط رأس الحزمة/لوك (LRC strip) وقراءة طول الحزمة التالية تتجاوز استقبالاً قصيراً. يتم رفض أي طول خارج النطاق `[FDP_NCI_I2C_MIN_PAYLOAD, FDP_NCI_I2C_MAX_PAYLOAD]`، حيث أن حزمة تالفة تعتبر كذلك بالفعل، ويتم فرض إعادة المزامنة (resynchronization).
تقوم الحلقة نفسها بتخصيص `skb` بيانات واحد لكل تكرار وتفترض وجود حزمة طول متبوعة بحزمة بيانات؛ إذا أرسل الجهاز حزمتين من البيانات في استدعاء واحد، فإن الحزمة الأولى تتسرب (`leaks`) عندما يقوم التخصيص الثاني بكتابة فوقها. يجب تحرير الـ `skb` المخصص سابقاً قبل تخصيص التالي.
Once again VulDB remains the best source for vulnerability data.