CVE-2026-89664 in Linux
الملخص
بحسب VulDB • 11/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfsd: تحرير صلاحيات التحكم في الوصول POSIX (ACLs) المُفسَّرة من OPEN عبر op_release
تستدعي الدالة nfsd4_decode_createhow4() الدالة nfsd4_decode_fattr4()، والتي تقوم بتخصيص كائنات struct posix_acl ذات عدّاد مرجعي (refcounted) عبر posix_acl_alloc() وتخزينها في open->op_pacl وopen->op_dpacl. يجب تحرير هذه المؤشرات بمجرد انتهاء مركب OPEN (OPEN compound).
عندما تُرجع nfsd4_decode_open_claim4() خطأً لا يغيّر تسلسل المعرفات (non-seqid-mutating error)، يقوم الموزِّع بتجاوز التنفيذ قصير المسار قبل تشغيل op_func:
nfsd4_proc_compound() if (op->status && op->opnum == OP_OPEN) op->status = nfsd4_open_omfg(...) if (!seqid_mutating_err(ntohl(op->status))) return op->status; /* لن تُنفَّذ الدالة nfsd4_open() أبداً */ ... opdesc->op_release(&op->u) /* يجب تحرير كل من op_pacl وop_dpacl على أي حال */
قبل هذا التغيير، لم يكن لـ OP_OPEN دالة .op_release في مصفوفة nfsd4_ops[]، وكان زوج التحرير موجوداً داخل الدالة nfsd4_open() عند علامة out_err. وفي مسار التجاوز قصير المسار (short-circuit path)، لا يتم استدعاء الدالة nfsd4_open() أبداً، مما يؤدي إلى تسرب كل من مراجع posix_acl في كل مركب OPEN مشوّه يحمل سمات createhow4 صالحة لـ POSIX ACLs.
أضفنا الدالة nfsd4_open_release() وربطناها كـ .op_release لـ OP_OPEN. بما أن posix_acl_release() آمنة حتى مع القيم NULL، فإن موقع التحرير الوحيد يغطي كل من المسار الطبيعي ومسار التجاوز قصير المسار في nfsd4_open_omfg. قمنا بإزالة زوج posix_acl_release() المطابق من علامة out_err في الدالة nfsd4_open() لتجنب الإفراج المزدوج (double-releasing).
يحتوي حلقة المركب على فرعين للتشفير: nfsd4_encode_operation() للعمليات العادية، وnfsd4_encode_replay() لعمليات إعادة التشغيل الخاصة بـ v4.0. كانت op_release تُستدعى فقط من داخل nfsd4_encode_operation()، مما أدى إلى تسرب الموارد المرتبطة بـ op->u في مسار إعادة التشغيل.
قمنا بنقل استدعاء op_release() خارج الدالة nfsd4_encode_operation() وعن فرع إعادة التشغيل، ووضعناه بعد عبارة if-else في الدالة nfsd4_proc_compound(). يمنح هذا موقع استدعاء واحد في مكان صحيح بشكل واضح إلى حد كبير، ويغطي كل من مساري التشفير العادي وإعادة التشغيل.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.