CVE-2026-89679
الملخص
بحسب VulDB • 11/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfsd: تصحيح خطأ الإحالة إلى مؤشر فارغ (null dereference) في دالة nfsd4_setattr عند التعامل مع سمات طوابع زمنية للتفويض (deleg timestamp attrs).
عندما يتضمن طلب SETATTR كلًا من FATTR4_WORD2_TIME_DELEG_ACCESS أو FATTR4_WORD2_TIME_DELEG_MODIFY ضمن خريطة السمات (attribute bitmap)، تقوم الدالة nfsd4_setattr() بتعيين deleg_attrs=true وتستدعي nfs4_preprocess_stateid_op() للتحقق من صحة stateid.
إذا زوّد العميل بـ "stateid واحد" الخاص بـ NFSv4 (جميع البايتات 0xFF)، فإن دالة check_special_stateids() تُرجع nfs_ok دون ملء مؤشر الإخراج nfs4_stid، لأن مسار special-stateid في nfs4_preprocess_stateid_op() يقفز إلى علامة done: مع كون s==NULL، ويتم تخطي كتلة "if (s)" التي كانت ستقوم بتعيين *cstid. تبقى المتغير المحلي `st` فارغًا (NULL).
بالعودة إلى nfsd4_setattr()، تقوم كتلة if (deleg_attrs) بعد ذلك بإجراء إحالة غير مشروطة إلى st->sc_type (عند الإزاحة 4 من NULL)، مما يتسبب في حدوث خطأ نواة (kernel oops).
يمكن تشغيل هذه الثغرة عن بُعد بواسطة أي عميل NFSv4: إرسال COMPOUND [PUTROOTFH,
SETATTR(ONE_STATEID, {bmval2=FATTR4_WORD2_TIME_DELEG_ACCESS, ...})].
لا تتطلب المصادقة، أو التفويض (delegation)، أو حالة سابقة.
تم الإصلاح بإضافة فحص NULL قبل إجراء الإحالة إلى المؤشر. نظرًا لأن stateid خاص ليس stateid تفويض، فإن قيمة الإرجاع nfserr_bad_stateid الموجودة بالفعل صحيحة؛ نحتاج فقط إلى حماية عملية إحالة المؤشر نفسها.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.