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

الملخص

بحسب VulDB • 29/05/2026

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

drm/amdkfd: إصلاح فحص الحدود لـ watch_id في مراقبة عناوين التصحيح (debug address watch) الإصدار 2

يتلقى كود مسح مراقبة العنوان (address watch clear code) قيمة watch_id كقيمة غير موقعة (unsigned) من نوع (u32)، لكن بعض الدوال المساعدة كانت تستخدم عددًا صحيحًا موقّتًا (signed int) وتتحقق من البتات عن طريق الإزاحة باستخدام watch_id.

إذا تم تمرير قيمة watch_id كبيرة جدًا من مساحة المستخدم (userspace)، فقد تتحول إلى قيمة سالبة. يمكن أن يؤدي هذا إلى إزاحات غير صالحة وقد يتسبب في الوصول إلى ذاكرة خارج مصفوفة watch_points.

drm/amdkfd: إصلاح فحص الحدود لـ watch_id في مراقبة عناوين التصحيح (debug address watch) الإصدار 2

يتم إصلاح ذلك عن طريق التحقق من أن watch_id تقع ضمن النطاق المحدد بـ MAX_WATCH_ADDRESSES قبل استخدامها. كما يتم استخدام BIT(watch_id) لاختبار ومسح البتات بشكل آمن.

يؤدي هذا إلى الحفاظ على السلوك دون تغيير لقيم watch_id الصالحة وتجنب السلوك غير المحدد (undefined behavior) للقيم غير الصالحة.

يصلح ما يلي: drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debug.c:448 kfd_dbg_trap_clear_dev_address_watch() خطأ: تجاوز في المخزن المؤقت (buffer overflow) 'pdd->watch_points' 4 <= u32max user_rl='0-3,2147483648-u32max' uncapped

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debug.c 433 int kfd_dbg_trap_clear_dev_address_watch(struct kfd_process_device *pdd, 434 uint32_t watch_id) 435 {
436 int r; 437 438 if (!kfd_dbg_owns_dev_watch_id(pdd, watch_id))

لا تقوم الدالة kfd_dbg_owns_dev_watch_id() بالتحقق من القيم السالبة، لذا إذا كانت watch_id أكبر من INT_MAX، فإن ذلك يؤدي إلى تجاوز في المخزن المؤقت (buffer overflow). (الإزاحات السالبة تعتبر سلوكًا غير محدد).

439 return -EINVAL; 440 441 if (!pdd->dev->kfd->shared_resources.enable_mes) {
442 r = debug_lock_and_unmap(pdd->dev->dqm); 443 if (r) 444 return r; 445 } 446 447 amdgpu_gfx_off_ctrl(pdd->dev->adev, false); --> 448 pdd->watch_points[watch_id] = pdd->dev->kfd2kgd->clear_address_watch(
449 pdd->dev->adev, 450 watch_id);

الإصدار 2: (وفقًا لـ Jonathan Kim) - إضافة التحقق من صحة watch_id >= MAX_WATCH_ADDRESSES في المسار الخاص بالإعداد (set path) لمطابقة المسار الخاص بالمسح (clear path). - إزالة فحص الحدود الزائد في الدالة kfd_dbg_owns_dev_watch_id().

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Linux

حجز

13/05/2026

إفشاء

27/05/2026

الاعتدال

تمت الموافقة

إدخال

VDB-366078

EPSS

0.00013

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!