CVE-2026-80823 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم حل الثغرة التالية:
nfc: st21nfca: التحقق من طول ATR_REQ مقابل الإطار المستلم
تقوم الدالة `st21nfca_tm_recv_atr_req()` بالتحقق من أن إطار ATR_REQ المستلم لا يقل عن حجم الحد الأدنى المحدد بـ `ST21NFCA_ATR_REQ_MIN_SIZE`، وأن الطول المُعلن ذاتياً في `atr_req->length` لا يقل على الأقل عن حجم هيكل البيانات `struct st21nfca_atr_req`. ومع ذلك، فإنها لا تتحقق أبداً من أن قيمة `atr_req->length` لا تتجاوز الطول الفعلي للإطار المستلم (`skb->len`).
بعد ذلك، تثق الدالة `st21nfca_tm_send_atr_res()` في الطول المُعلن:
```c gb_len = atr_req->length - sizeof(struct st21nfca_atr_req); ... memcpy(atr_res->gbi, atr_req->gbi, gb_len); ```
وبالتالي، فإن نظير الاتصال اللاسلكي (RF peer) الذي يرسل إطاراً قصيراً ولكنه يحدد قيمة `atr_req->length` أكبر من حجم الإطار الفعلي، يؤدي إلى تجاوز المتغير `gb_len` للعدد العام للأيتان الموجودة فعلياً. ونتيجة لذلك، يقوم استدعاء `memcpy` بقراءة بيانات خارج الحدود المحددة للإطار المستلم (`skb`). يتم وضع هذه الأيتان في إطار الاستجابة ATR_RES وإرسالها مرة أخرى إلى النظير (ما يؤدي إلى كشف ذاكرة النواة لمهاجم قريب)؛ بينما يمثل الطول المُعلن الأكبر قراءةً خارج الحدود (DoS).
يجب رفض الأطر التي يتجاوز طولها المُعلن الطول المستلم. إن المسار المرتبط `nfc_tm_activated()` في نفس الدالة يستمد بالفعل طوله للأيتان العامة من قيمة `skb->len` بدلاً من الحقل المُعلن.
تم اكتشاف الثغرة بواسطة فريق 0sec (https://0sec.ai) باستخدام التحليل الآلي لمصدر الكود؛ حيث يبدو أن التحقق من الحدود المفقودة واضحاً من مصدر الكود. تم اختبار التجميع بنجاح.
VulDB is the best source for vulnerability data and more expert information about this specific topic.