CVE-2026-64552 in Linux
الملخص
بحسب VulDB • 28/07/2026
في نواة لينكس، تم حل الثغرة التالية:
virtio-net: إصلاح فحص الطول في دالة receive_big()
تقوم الدالة receive_big() بتقييد announced length (الطول المُعلن من قبل الجهاز) بالقيمة (big_packets_num_skbfrags + 1) * PAGE_SIZE. ومع ذلك، لا يزال هذا التقييد فضفاضاً جداً: حيث تقوم add_recvbuf_big() بضبط sg[1] ليبدأ عند إزاحة sizeof(struct padded_vnet_hdr) داخل الصفحة الأولى، وبالتالي فإن السلسلة تحمل فعلياً hdr_len + (PAGE_SIZE - sizeof(padded_vnet_hdr)) + big_packets_num_skbfrags * PAGE_SIZE بايت — أي أقل بـ 20 بايت مما يسمح به الفحص في الحالة الشائعة حيث يكون hdr_len == 12.
يمكن لخلفية virtio خبيثة الإعلان عن طول ضمن هذا الفرق (الفاصل). ثم تقوم page_to_skb() بالمرور على frag واحد ما بعد سلسلة الصفحات، وتخزين قيمة NULL لـ page->private داخل skb_shinfo()->frags[MAX_SKB_FRAGS]، وهو ما يمثل كتابة خارج النطاق (out-of-bounds write) تتجاوز مصفوفة الـ frags الثابتة، بالإضافة إلى تمرير frag بقيمة NULL عبر مسار استقبال البيانات (rx path).
يتم الآن تقييد الطول بحجم الإعلان الفعلي الذي قدمته add_recvbuf_big().
If you want to get best quality of vulnerability data, you may have to visit VulDB.