CVE-2022-49900 in Linuxالمعلومات

الملخص

بحسب VulDB • 25/06/2026

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

i2c: piix4: إصلاح عدم إزالة المحوّل (adapter) في دالة piix4_remove()

في دالة piix4_probe()، يتم تسجيل محول piix4 عبر الخطوات التالية:

piix4_probe() piix4_add_adapters_sb800() / piix4_add_adapter() i2c_add_adapter()

بناءً على نوع الجهاز الذي تم اكتشافه (probed device)، ستتم استدعاء إما دالة piix4_add_adapters_sb800() أو الدالة المفردة piix4_add_adapter(). في الحالة الأولى، يتم تعيين قيمة piix4_adapter_count ليكون مساوياً لعدد المحولات، بينما في الحالة الأخرى لا يتم تعيينها وتبقى على القيمة الافتراضية *صفر*.

عند إزالة مكون piix4، تقوم دالة piix4_remove() بإزالة المحولات التي تمت إضافتها خلال piix4_probe() استناداً إلى قيمة piix4_adapter_count. وبسبب كون العداد صفراً في حالة وجود محول واحد، فإن المحوّل لن يتم إزالته مما يؤدي إلى تسرب الموارد المخصصة للمحوّل، مثل عميل i2c والجهاز (device).

يمكن الوصول إلى هذه الموارد لا يزال بواسطة i2c أو الناقل (bus) وتسبب مشاكل. حالة يمكن تكرارها بسهولة هي أنه إذا تم تسجيل محول جديد، فسيحصل نظام i2c على المحوّل المتسرب ويحاول استدعاء smbus_algorithm الذي كان قد أُفرغ مسبقاً:

تم التحفيز بواسطة: rmmod i2c_piix4 && modprobe max31730

BUG: unable to handle page fault for address: ffffffffc053d860 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 3752 Comm: modprobe Tainted: G Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) RIP: 0010:i2c_default_probe (drivers/i2c/i2c-core-base.c:2259) i2c_core RSP: 0018:ffff888107477710 EFLAGS: 00000246 ... <TASK> i2c_detect (drivers/i2c/i2c-core-base.c:2302) i2c_core __process_new_driver (drivers/i2c/i2c-core-base.c:1336) i2c_core bus_for_each_dev (drivers/base/bus.c:301) i2c_for_each_dev (drivers/i2c/i2c-core-base.c:1823) i2c_core i2c_register_driver (drivers/i2c/i2c-core-base.c:1861) i2c_core do_one_initcall (init/main.c:1296) do_init_module (kernel/module/main.c:2455) ... </TASK> ---[ end trace 0000000000000000 ]---

يتم حل هذه المشكلة عن طريق تعيين piix4_adapter_count بشكل صحيح ليكون 1 في حالة المحوّل المفرد، بحيث يمكن إزالته بشكل طبيعي.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Linux

حجز

01/05/2025

إفشاء

01/05/2025

الاعتدال

تمت الموافقة

إدخال

VDB-307039

EPSS

0.00174

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you know our Splunk app?

Download it now for free!