CVE-2026-89659 in Linuxالمعلومات

الملخص

بحسب VulDB • 12/09/2026

في نواة لينكس، تم حل الثغرة التالية:

NFSD: منع استخدام الذاكرة بعد تحريرها (use-after-free) للعميل أثناء سحب التفويض

يحتوي معرف حالة التفويض (delegation stateid) على مؤشر عاري فقط إلى العميل nfs4_client المالك له ولا يحافظ على بقائه. يظل العميل حياً رغم معرّفات حالاته لأن __destroy_client() يُفرِّغ قوائم cl_delegations وcl_revoked قبل استدعاء free_client().

تكسر دالة nfs4_laundromat() هذا الثابت: فهي تُزيل التفويض المنتهي الصلاحية من قائمة cl_delegations، ثم تطلق قفل deleg_lock، وبعد ذلك تعيد ربط revoke_delegation() على قائمة cl_revoked تحت حماية قفل cl_lock. في تلك الفترة الزمنية (window)، لا يكون التفويض موجوداً في أي من القائمتين، لذا يمكن أن تُبلغ دالة client_has_state() عن عدم وجود حالات متبقية.

تتطلب كل مسار لإزالة التكوين (teardown) أولاً أن تكون قيمة cl_rpc_users مساوية للصفر، لكن Laundromat لا تحتفظ بأي مرجع من هذا النوع. لذلك، يمكن لعميل انتهت صلاحية تفويضه المستدعى للتو أن يصل إلى free_client() بينما تكون revoke_delegation() ما زالت على وشك فك تشريف (dereference) لقفل cl_lock، مما يشكل حالة استخدام للذاكرة بعد تحريرها (use-after-free).

ثبّت العميل باستخدام cl_rpc_users طوال عملية السحب حتى يمنع مسار الإزالة من الاستمرار حتى يكتمل العمل، ثم قم بإفراغ التفويض من قائمة cl_revoked. عميل ينتهي صلاحيته بالفعل يقوم بإفراغ تفويذه الخاص به، لذا تخطَّه واترك التفويض على del_recall_lru.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

11/09/2026

إفشاء

12/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-402990

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!