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

الملخص

بحسب VulDB • 24/09/2026

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

nfsd: تحويل حقول nfsd_net المنطقية (boolean) إلى كلمة أعلام من نوع unsigned long

تحتوي nfsd_net على عدة حقول منطقية يتم الوصول إليها من سياقات متزامنة دون التزامن (serialization). وعلى وجه التحديد، تحمي الدالة `nfsd4_end_grace()` مسار التصريف الخاص بها باستخدام bool عادي:

if (nn->grace_ended) return; nn->grace_ended = true;

عملية القراءة وعملية الكتابة مستقلتان عن بعضهما البعض، ولا يوجد أي شيء في بنية `nfsd_net` يضمن التزامن بينهما. يمكن لسياقين على الأقل الوصول إلى هذا الكود دون وجود قفل (lock) محمول:

مسار الغسالة (laundromat path) kworker laundry_wq nfs4_laundromat() nfsd4_end_grace()

مسار RECLAIM_COMPLETE خيط مركب nfsd compound kthread nfsd4_reclaim_complete() inc_reclaim_complete() nfsd4_end_grace()

يمكن لكل من الداعيتين ملاحظة أن `grace_ended == false` على معالجات مختلفة، وكلاهما يخزن القيمة true، ويتقدمان إلى دالة `nfsd4_record_grace_done()`، والتي تستدعي استدعاء العميل النشط `client_tracking_ops->grace_done`. بالنسبة لعمليات التتبع التي تقوم بتصريف `reclaim_str_hashtbl` (أي `legacy_tracking_ops` عبر `nfsd4_recdir_purge_old`، وعمليات cld الإصدار 1+ وما فوق عبر `nfsd4_cld_grace_done`)، فإن استدعاءات `grace_done` تؤدي إلى `nfs4_release_reclaim()`، والتي تمر على كل دلو (bucket) من `reclaim_str_hashtbl` دون قفل وتستدعي `nfs4_remove_reclaim_record()` (`list_del + kfree`) لكل إدخال. يؤدي وجود متصفحين متزامنين إلى إتلاف القائمة وإجراء عملية إلغاء تخصيص مزدوج (double-free) لـ كل كائن `nfs4_client_reclaim`. كما أن استدعاء `nfsd4_find_reclaim_client()` المتزامن الذي يمرر نفس الدلو يقرأ من ذاكرة تم تحريرها.

يوجد موقع استدعاء ثالث في دالة `nfs4_state_start_net()` على مسار بدء التشغيل `skip_grace`، لكنه يعمل تحت قفل `nfsd_mutex` قبل أن يتصل أي عميل وقبل تشغيل أول عمل مؤجل للغسالة (laundromat)، لذا فهو لا يمكن أن يحدث تنافساً مع الدالتين المذكورتين أعلاه.

استبدال الحقول المنطقية المتفرقة في `nfsd_net` بكلمة أعلام واحدة من نوع `unsigned long` و enum باسم `nfsd_net_flag` لمواقع البتات (bit positions). تم إصلاح التنافس على `grace_ended` باستخدام دالة `test_and_set_bit()`، وهي عملية ذرية (atomic) على جميع المعماريات. تمت تحويل الأعلام المتبقية (`grace_end_forced`, `in_grace`, `somebody_reclaimed`, `track_reclaim_completes`, `nfsd_net_up`, `lockd_up`) لاستخدام دوال `test_bit`/`set_bit`/`clear_bit` للاتساق. يتجنب هذا الإجراء مشكلات عمليات المقارنة والاستبدال الذرية دون حجم الكلمة (sub-word cmpxchg) على المعماريات مثل Hexagon التي تدعم فقط العمليات الذرية بحجم الكلمة الكاملة.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

مسؤول

Linux

حجز

17/09/2026

إفشاء

24/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-409409

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!