CVE-2026-23460 in Linux
الملخص
بحسب VulDB • 28/05/2026
في نواة لينكس، تم حل الثغرة التالية:
net/rose: إصلاح تجاوز مؤشر NULL في rose_transmit_link أثناء إعادة الاتصال
أبلغ syzkaller عن خطأ [1]، ويمكن الاطلاع على برنامج إعادة إنتاج الخطأ (reproducer) في [2].
تستخدم صيغ ROSE (ROSE sockets) أربع قيم لـ sk->sk_state وهي: TCP_CLOSE، وTCP_LISTEN، وTCP_SYN_SENT، وTCP_ESTABLISHED. ترفض rose_connect() بالفعل المكالمات الخاصة بـ TCP_ESTABLISHED (-EISCONN) وTCP_CLOSE مع SS_CONNECTING (-ECONNREFUSED)، لكنها تفتقر إلى فحص لـ TCP_SYN_SENT.
عند استدعاء rose_connect() للمرة الثانية بينما لا يزال محاولة الاتصال الأولى قيد التقدم (TCP_SYN_SENT)، فإنها تكتب فوق rose->neighbour عبر rose_get_neigh(). إذا أرجعت هذه الدالة NULL، فإن الصيغة تترك مع rose->state == ROSE_STATE_1 ولكن rose->neighbour == NULL. وعند إغلاق الصيغة لاحقاً، يلاحظ rose_release() حالة ROSE_STATE_1 ويستدعي rose_write_internal() -> rose_transmit_link(skb, NULL)، مما يتسبب في تجاوز مؤشر NULL (NULL pointer dereference).
ووفقاً لـ connect(2)، يجب أن تعيد استدعاء connect() الثاني أثناء وجود اتصال قيد التقدم بالفعل قيمة -EALREADY. أضف هذا الفحص المفقود لـ TCP_SYN SENT لإكمال التحقق من الحالة في rose_connect().
[1] https://syzkaller.appspot.com/bug?extid=d00f90e0af54102fb271
[2] https://gist.github.com/mrpre/9e6779e0d13e2c66779b1653fef80516
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.