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

الملخص

بحسب VulDB • 26/10/2026

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

بلوتوث: MGMT: إصلاح حالة الأوامر المعلقة التي يتم مسحها عند إيقاف التشغيل

تستقبل الدالة `cmd_complete_rsp()` بنية بيانات من نوع `struct cmd_lookup`، وفي حال وجود أمر معلق لا يحتوي على دالة رد مكتملة (`cmd_complete callback`)، تنتقل التنفيذ إلى `cmd_status_rsp(cmd, data)`. تقرأ `cmd_status_rsp()` البيانات كـ مؤشر لقيمة ثنائية الأبعاد (u8 *)، وبالتالي فإن الحالة المرسلة تأتي من البايت الأول لتمثيل `match->sk` وليس من `match->mgmt_status`.

أدى التغيير في commit f53e1c9c726d ("Bluetooth: MGMT: Fix possible crash on mgmt_index_removed") إلى تغيير بيانات المتصلين من `&status` إلى `&match` وتحديث فرع `cmd_complete` ليشير إلى `match->mgmt_status`، لكنه ترك الانتقال التلقائي (fall-through) مع تمرير البيانات دون تغيير.

في دالة `mgmt_index_removed()` تكون قيمة `match->sk` هي NULL، لذا يتم الرد على كل أمر من هذا النوع بالحالة 0x00 (نجاح) بدلاً من MGMT_STATUS_INVALID_INDEX. وفي دالة `__mgmt_power_off()` تكون القيمة NULL أيضاً، إلا إذا كان هناك أمر "Set Powered" معلق: عندها تقوم الدالة `settings_rsp()` بتخزين socket الخاص بذلك الأمر في `match->sk`، ويأتي البايت المرسل من مؤشر الـ socket. وبكلا الحالتين، تفقد الحالة التي وضعها المتصل (سواء كانت MGMT_STATUS_NOT_POWERED أو MGMT_STATUS_INVALID_INDEX عندما يتم إلغاء تسجيل الجهاز).

تمرير الحالة التي يحددها المتصلون.

تم ملاحظة هذا السلوك على جهاز محمول مزود بشريحة QCA9377: حيث تم الرد على أمر "Start Discovery" الخاص بـ bluetoothd (والذي كان معلقاً عند إيقاف تشغيل المحول) بحالة الأمر 0x00 وبدون معاملات، مما تسبب في تعطل برنامج bluetoothd الإصدار 5.72 بسبب نجاح بطول صفر. منذ ذلك الحين، أضاف مستودع BlueZ الرئيسي فحص الطول على هذا المسار ("adapter: Fix crash on short start discovery reply"، commit a734b06059cb الخاص بـ BlueZ)، ولكن يجب إعلام المستخدمينpace بالحالة "Not Powered" وليس "Success".

تم الاختبار على نظام Ubuntu الإصدار 7.0.0-31 مع وحدة تحكم افتراضية (hci_vhci): حيث يتم إبقاء إيقاف التشغيل في HCI Write Scan Enable بينما يُقدم أمر Start Discovery، ويقوم المسح بالرد عليه بحالة 0x00 قبل هذا التغيير و 0x0f (Not Powered) بعده.

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

مسؤول

Linux

حجز

25/09/2026

إفشاء

26/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-426476

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!