CVE-2026-80800 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfc: llcp: تحديد نطاق عملية اجتياز TLV connect_sn ضمن حدود skb
أصلح الالتزام 27256cdb290e ("nfc: llcp: تقييد تحليل SNL TLV لـ skb وإضافة فحوصات الطول") عملية اجتياز TLV غير المحددة في nfc_llcp_recv_snl()، والتزم لاحقاً الالتزام d8bd2dedbde5 ("nfc: llcp: إصلاح قراءة خارج الحدود (OOB) ولفاف إزاحة u8 في محللات TLV") بـ nfc_llcp_parse_gb_tlv() و nfc_llcp_parse_connection_tlv(). يبقى أحد المحللات الشقيقة الذي يشارك نفس النمط غير مقيد النطاق: nfc_llcp_connect_sn().
تقوم دالة nfc_llcp_connect_sn() بجولة في قائمة TLV، حيث تقرأ رأساً مكوناً من بايتين (النوع والطول) يليه طول البايتات للقيمة، دون التحقق مما إذا كان بايتا الرأس أو الطول المعلن يظلان ضمن حدود المخزن المؤقت. وهي تعيد مؤشراً إلى اسم خدمة يصل طوله إلى 255 بايت قد يشير إلى ما بعد نهاية skb؛ ويتم استهلاك هذا المؤشر لاحقاً بواسطة memcmp() في nfc_llcp_sock_from_sn(). بالإضافة إلى ذلك، تم حساب tlv_array_len على أنه "skb->len - LLCP_HEADER_SIZE" من نوع size_t، لذا فإن إطار CONNECT/CC الأقصر من رأس LLCP يؤدي إلى تجاوز سالب (underflow) للطول ليصبح طوله هائلاً، وتجتاز الدورة المخزن المؤقت بامتداد كبير.
يمكن الوصول إلى nfc_llcp_connect_sn() عبر نفاذ nfc_llcp_recv_connect() و nfc_llcp_recv_cc()، أي من وحدات PDUs المستلمة CONNECT و CC. يمكن لجهاز NFC قريب الوصول إلى هذا دون مصادقة؛ حيث يحدث تنشيط رابط LLCP تلقائياً بعد NFC-DEP، ولا يطبق مُوزع nfc_llcp_rx_skb() حارساً للحد الأدنى للطول.
قم بجولة قائمة TLV باستخدام المؤشر، مقيدة بـ skb_tail_pointer(skb)، وقم بالتحقق من صحة كل طول معلن قبل استخدامه، متبعية النهج المستخدم بالفعل لـ nfc_llcp_recv_snl(). بدء الجولة عند &skb->data[LLCP_HEADER_SIZE] مقابل مؤشر الذيل يزيل أيضاً تجاوز الطول السالب (underflow) للإطارات القصيرة.
تم اكتشافها بواسطة أدوات البحث الأمني الآلية الخاصة بـ 0sec (https://0sec.ai).
Be aware that VulDB is the high quality source for vulnerability data.