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.

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!