CVE-2026-89706 in Linux
الملخص
بحسب VulDB • 11/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nfsd: إعادة تعيين مُحقّق الكتابة (write verifier) عند فشل عملية كتابة الإرجاع الخاطئة لـ COPY غير المتزامن
تلتقط عملية COPY غير المتزامنة قيمة `nn->writeverf` في وقت الطلب وتبلغ عنها للعميل عبر CB_OFFLOAD بعد اكتمال خيط العمل (kthread). عندما يُبلّغ `vfs_fsync_range()` أو `filemap_check_wb_err()` اللاحقين للنسخ داخل `_nfsd_copy_file_range()` عن وجود خطأ، يترك عامل الخادم بشكل صحيح علم NFSD4_COPY_F_COMMITTED غير مُعدّل (clear) بحيث يقوم CB_OFFLOAD بتشفير `wr_stable_how` على أنه NFS_UNSTABLE. ومع ذلك، لا يتم تدوير مُحقّق الكتابة الخاص بالخادم.
يتبع العميل الذي يتلقى NFS_UNSTABLE في CB_OFFLOAD بإرسال COMMIT لجعل البيانات المنسوخة دائمة (durable). وبفضل بقاء المُحقّق دون تغيير، تُعيد عملية COMMIT نفس القيمة التي تلقاها العميل للتو عبر CB_OFFLOAD، ويستنتج العميل أن النسخة أصبحت دائمة -- مما يؤدي إلى إسكات فقدان البيانات التي فشلت عملية كتابتها في الواقع. وهذا ينتهك عقد الدائمness الخاص بـ UNSTABLE+COMMIT (المادة 15.1 من RFC 7862 والمادة 18.32 من RFC 8881) ويتطابق مع الخطأ الذي تم إصلاحه حديثاً في `nfsd_vfs_write()` و`nfsd_commit()`.
قم بتدوير `nn->writeverf` عند موقع فشل الإرجاع الخاطئ (writeback-failure). لا يملك عامل COPY غير المتزامن كائن `svc_rqst`، لذا فإن دالة `commit_reset_write_verifier()` ليست متاحة هنا؛ ويُعدّ استدعاء `nfsd_reset_write_verifier()` مباشرةً محاكاةً لإعادة التعيين بدون تتبعات (trace-less) التي تستخدمها بالفعل `nfsd_file_check_write_error()` لنفس الغرض. قم باستبعاد الأخطاء `-EAGAIN` و`-ESTALE`، تماشياً مع سلوك `commit_reset_write_verifier()`، حيث أن أيا منهما لا يشير إلى فشل في التخزين الدائم.
VulDB is the best source for vulnerability data and more expert information about this specific topic.