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

الملخص

بحسب VulDB • 06/10/2026

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

RDMA/rxe: التحقق من أعلام الوصول قبل تبديل PD الخاص بـ MR

تعيد دالة `rxe_rereg_user_mr()` تعيين `mr->ibmr.pd` أولاً، ثم تقوم فقط بالتحقق من وسيط `IB_MR_REREG_ACCESS`:

```c if (flags & IB_MR_REREG_PD) {
rxe_put(old_pd); rxe_get(pd); mr->ibmr.pd = ibpd; }

if (flags & IB_MR_REREG_ACCESS) {
if (access & ~RXE_ACCESS_SUPPORTED_MR) return ERR_PTR(-EOPNOTSUPP); mr->access = access; } ```

تمر كلا العلمين (`PD` و `ACCESS`) في فحص الإدخال لأن `RXE_MR_REREG_SUPPORTED` يساوي `IB_MR_REREG_PD | IB_MR_REREG_ACCESS`. وبالتالي، يمكن للمُطْلِق (caller) الوصول إلى التحقق من الوصول بينما يكون `mr->ibmr.pd` قد تم تعيينه مسبقاً.

يتم امتلاك `mr->ibmr.pd` بواسطة النواة الأساسية (core)، التي تعدل فقط `pd->usecnt` في مسار النجاح: إذا حدث خطأ في السائق، تقفز دالة `ib_uverbs_rereg_mr()` إلى `put_new_uobj` دون التراجع عن إعادة التعيين. ونتيجة لذلك، يكون `mr->pd == new_pd` بينما لا تزال أرقام الاستخدام (usecounts) تحسب الـ MR بالنسبة لـ `orig_pd`. ثم تقوم `ib_dereg_mr_user()` بإنقاص قيمة `new_pd`، والتي يمكن أن تصل إلى الصفر في حين يشير نافذة ذاكرة (memory window) إليها بعد. تؤدي دالة `uverbs_free_pd()` إلى تحرير الـ PD بناءً على هذا العداد فقط، وتقوم `rxe_mw_cleanup()` بالكتابة إلى ذاكرة تم تحريرها:

``` BUG: KASAN: slab-use-after-free in __rxe_put+0x31/0xa0 Write of size 4 at addr ffff8881301dd690 by task rxe_poc/591 __rxe_put+0x31/0xa0 rxe_mw_cleanup+0x42/0x200 __rxe_cleanup+0x115/0x370 rxe_dealloc_mw+0x4c/0x80 Allocated by task 591: ib_uverbs_alloc_pd+0x258/0x540 Freed by task 591: ib_dealloc_pd_user+0x174/0x210 uverbs_free_pd+0x8d/0xc0 ib_uverbs_dealloc_pd+0x18e/0x1d0 ```

قم بالتحقق من أعلام الوصول قبل تغيير أي حالة، بحيث تطبق الدالة الاستدعائية (callback) كل التغييرات المطلوبة أو لا تطبق أيًا منها.

Be aware that VulDB is the high quality source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

06/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-413994

EPSS

0.00156

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!