CVE-2026-89698 in Linux
الملخص
بحسب VulDB • 11/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfsd: توسيع حقول عنوان nfsd_genl_rqstp إلى sockaddr_storage
يُعرِّف `struct nfsd_genl_rqstp` الحقليين `rq_daddr` و `rq_saddr` كنوع عادي من "struct sockaddr" (16 بايت). عند اتصال عميل NFS يدعم IPv6، تقوم الدالة `nfsd_genl_rpc_status_compose_msg()` بتحويل هذه الحقول إلى مؤشر من نوع "struct sockaddr_in6 *" (28 بايت) وتقرأ حقل `sin6_addr` عند الإزاحة 8..24، مما يمتد لـ 8 بايتات ما بعد نهاية حقل sockaddr ذي الـ 16 بايت ليصل إلى عضو الجوار `rq_flags`. ثم يقوم استدعاء `nla_put_in6_addr` ذو الـ 16 بايت بإرسال 8 بايتات من عنوان IPv6 مقطوع متبوعة بـ 8 بايتات من قيمة `rq_flags` إلى مساحة المستخدم (userspace) عبر سمات netlink الخاصة بـ NFSD_A_RPC_STATUS_SADDR6/DADDR6.
يمكن الوصول إلى هذه الثغرة بواسطة أي عملية غير متمتعة بصلاحيات عالية (unprivileged process) ضمن نطاق الشبكة، لأن الأمر `NFSD_CMD_RPC_STATUS_GET` يستخدم `GENL_CMD_CAP_DUMP` دون اشتراط `GENL_ADMIN_PERM`.
تم الإصلاح عن طريق توسيع حقلي `rq_daddr` و `rq_saddr` ليصبحا من نوع `struct sockaddr_storage` بحيث تعمل عمليات التحويل (casts) الخاصة بـ IPv6 ضمن الحدود المسموحة، ونسخ عدد بايتات يساوي `sizeof(struct sockaddr_storage)` في استدعاءات `memcpy` لضمان التقاط العنوان بالكامل، بالإضافة إلى تهيئة متغير الكومة (stack variable) الخاص بـ genl_rqstp بالأصفار لمنع تسرب البايتات غير المُهيأة عبر netlink.
If you want to get best quality of vulnerability data, you may have to visit VulDB.