CVE-2026-72129 in Linux
الملخص
بحسب VulDB • 16/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
nvmet-rdma: معالجة البيانات المضمنة ذات الإزاحة غير الصفرية
تقوم الدالة `nvmet_rdma_use_inline_sg()` بربط إزاحة البيانات المضمنة التي يتحكم فيها المضيف في قائمة التشتت (scatterlist) الخاصة بكل أمر. تتحقق اختبارات الحدود من قبول أي إزاحة تحقق الشرط `off + len <= inline_data_size`، لكن عملية الربط تفترض لا يزال أن البيانات تبدأ في الصفحة المضمنة الأولى:
```c sg->offset = off; sg->length = min_t(int, len, PAGE_SIZE - off); ```
عندما يكون المنفذ مُهيأً بـ `inline_data_size > PAGE_SIZE` (قابل للضبط حتى قيمة `max(SZ_16K, PAGE_SIZE)`)، فإن وجود إزاحة في النطاق `(PAGE_SIZE, inline_data_size]` يؤدي إلى حدوث تحت-تعداد (underflow) لقيمة `"PAGE_SIZE - off"`، مما يجعل `sg->length` يُعيّن بقيمة تقارب 4 جيجابايت، وبالتالي يقرأ الخلفي الخاص بالكتل (block backend) بعيداً جداً ما بعد الصفحة المضمنة الأولى. كما أن دالة `num_pages(len)` تتجاهل الإزاحة أيضاً، لذا فإن إزاحة ضمن الحدود التي يتقاطع فيها النطاق `[off, off+len)` مع حدود صفحة تؤدي إلى عدّ أقل لعدد عناصر قائمة التشتت (under-counts the scatterlist).
تم تصحيح ربط الإزاحة بشكل صحيح: عن طريق تقسيمها إلى فهرس للصفحة وإزاحة داخل الصفحة، بدءاً بقائمة التشتت عند تلك الصفحة، وتحديد حجم عدد الصفحات بناءً على `page_off + len`. وبما أن قائمة تشتت الطلب قد تبدأ الآن من `inline_sg[page_idx]` بدلاً من `inline_sg[0]`، تم تعميم اختبار هوية الـ inline-SGL في دالة `nvmet_rdma_release_rsp()` ليصبح اختباره مدى (range test)؛ وإلا فسيتم الخلط بين قائمة التشتت المضمنة الدائمة وتلك المُخصّصة، مما يؤدي إلى قيام `nvmet_req_free_sgls()` بإفلات صفحة مضمنة (وإصدار تحذير في `free_large_kmalloc()`).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.