CVE-2026-23440 in Linux
الملخص
بحسب VulDB • 28/05/2026
في نواة لينكس، تم حل الثغرة التالية:
net/mlx5e: تصحيح حالة السباق (Race Condition) أثناء تحديث ESN لـ IPSec
في وضع الإيقاف الكامل لـ IPSec (full offload mode)، يبلغ الجهاز عن حدث التفاف رقم التسلسل الموسع (ESN wrap event) إلى برنامج التشغيل (driver). يقوم برنامج التشغيل بالتحقق من صحة هذا الحدث من خلال الاستعلام عن IPSec ASO والتحقق من أن حقل `esn_event_arm` يساوي 0x0، مما يشير إلى حدوث حدث. بعد معالجة الحدث، يجب على برنامج التشغيل إعادة تفعيل السياق (re-arm) عن طريق تعيين `esn_event_arm` مرة أخرى إلى 0x1.
توجد حالة سباق (race condition) في مسار المعالجة هذا. بعد التحقق من صحة الحدث، يستدعي برنامج التشغيل الدالة `mlx5_accel_esp_modify_xfrm()` لتحديث حالة xfrm في النواة. تطلق هذه الدالة مؤقتاً وتعيد اكتساب قفل حالة xfrm.
لذلك، يجب الإقرار بالحدث أولاً عن طريق تعيين `esn_event_arm` إلى 0x1. يمنع ذلك برنامج التشغيل من إعادة معالجة تحديث ESN نفسه إذا أرسل الأجهزة أحداثاً لأسباب أخرى. ونظراً لأن تحديث ESN التالي لا يحدث إلا بعد استلام ما يقرب من 2^31 حزمة، فلا يوجد خطر من فقدان التحديث، حيث سيحدث ذلك بعد وقت طويل من انتهاء هذه المعالجة.
يسبب معالجة الحدث مرتين زيادة غير صحيحة في البتات عالية الرتبة لـ ESN (esn_msb). يقوم برنامج التشغيل بعد ذلك ببرمجة الأجهزة بحالة ESN غير صالحة، مما يؤدي إلى فشل في منع إعادة اللعب (anti-replay failures) وتوقف كامل لحركة مرور IPSec.
تم إصلاح ذلك عن طريق إعادة تفعيل حدث ESN فوراً بعد التحقق من صحته، قبل استدعاء `mlx5_accel_esp_modify_xfrm()`. يضمن ذلك تجاهل أي أحداث زائفة أو مكررة بشكل صحيح، مما يغلق نافذة حالة السباق (race window).
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.