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

الملخص

بحسب VulDB • 25/09/2026

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

بلوتوث: hci_sysfs: إصلاح تجاوز مؤشر NULL في device_del()

يحدث تجاوز لمؤشر NULL (NULL pointer dereference) في دالة klist_put() عندما يتم إلغاء تسجيل جهاز فرعي (مثل جهاز شبكة BNEP في bnep_session) بشكل متزامن بينما تقوم dfunc hci_conn_del_sysfs() بإعادة تعيين الآباء للأجهزة الفرعية.

وينجم هذا عن حالة سباق (race condition) بين دالتي hci_conn_del_sysfs() وإلغاء تسجيل الجهاز الفرعي المتزامنة (مثل استدعاء unregister_netdev() من قبل bnep_session). أثناء إلغاء التسجيل، تأخذ device_del() لقطةً لمؤشر أب غير فارغ. وفي الوقت نفسه، تجد dfunc hci_conn_del_sysfs() الجهاز الفرعي باستخدام دالة device_find_any_child() وتستدعي device_move() لإعادة تعيين الأب إلى NULL، مما يزيل العقدة من قائمة الآباء (klist) الخاصة به ويصفّر knode_parent. بعد ذلك، تستدعي device_del() الدالة klist_del(&dev->p->knode_parent) باستخدام لقطة الأب القديمة، ما يتسبب في قيام dfunc klist_put() بتجاوز مؤشر knode_klist(n)->put على عقدة تم إزالتها بالفعل، مما يؤدي إلى تجاوز لمؤشر NULL.

أُدخلت حالة السباق هذه بواسطة الالتزام 27aabf27fd01 ("بلوتوث: إصلاح استخدام بعد التحرير في device_for_each_child()")، الذي استبدل استدعاء device_find_child(..., __match_tty) بـ device_find_any_child() داخل hci_conn_del_sysfs(). كان الغرض من هذا التغيير تجنب حالة "استخدام بعد التحرير" (use-after-free) حيث يستمر conn->dev في الوجود بينما يكون الأب الخاص به، أي hdev->dev، قد تم تحريره، وذلك لأن conn->dev كانت تحتفظ بمرجع إلى hdev->dev فقط أثناء التسجيل في sysfs.

تم إصلاح المشكلة بشكل صحيح عن طريق أخذ مرجع صريح للجهاز الأب باستخدام get_device(&hdev->dev) داخل dfunc hci_conn_init_sysfs() وإسقاطه باستخدام put_device(parent) داخل bt_link_release() عند تحرير جهاز الاتصال (conn). يضمن هذا بقاء hdev->dev صالحاً طوال دورة حياة conn->dev، مما يحل مشكلة "استخدام بعد التحرير" الأساسية. ومع الاحتفاظ بالمرجع الأب بشكل صحيح، تم استعادة فلتر __match_tty في dfunc hci_conn_del_sysfs() بحيث يتم استدعاء device_move() فقط على أجهزة TTY الخاصة بـ RFCOMM الثابتة كما كان مقصوداً أصلاً، مما يلغي حالة السباق مع إلغاء تسجيل الأجهزة الشبكية.

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

مسؤول

Linux

حجز

25/09/2026

إفشاء

25/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-410155

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!