CVE-2026-81038 in Zephyr
الملخص
بحسب VulDB • 26/10/2026
يُبنى خادم خدمة نقل الكائنات (Object Transfer Service) مؤشر استجابة نقطة التحكم في إجراءات الكائن (OACP) الخاص به داخل الدالة oacp_ind_send() (الملف subsys/bluetooth/services/ots/ots_oacp.c). قبل هذا الإصلاح، كان يُضاف حقل "قيمة التحقق من الصحة" ذي الأربعة بايتات بغض النظر عن رمز النتيجة، كلما كانت رمز العملية المطلوبة هو BT_GATT_OTS_OACP_PROC_CHECKSUM_CALC. حمولة الاستجابة عبارة عن مصفوفة متراصة (stack buffer) غير مهيأة وأحادية البُعد مكونة من أربعة بايات، مُعلَّنة باستخدام NET_BUF_SIMPLE_DEFINE(resp_param, sizeof(uint32_t)) في الدالة bt_gatt_ots_oacp_write()، ويتم ملؤها فقط عند المسار الناجح للدالة oacp_checksum_proc_validate(). في كل مسارات الفشل، تبقى المصفوفة فارغة، مما أدى إلى استدعاء net_buf_simple_pull_le32() على مصفوفة بطول صفر.
تم الإعلان عن خاصية OACP ووصيف تكوين الخاصية العميل (client characteristic configuration descriptor) باستخدام BT_GATT_PERM_WRITE وBT_GATT_PERM_READ | BT_GATT_PERM_WRITE، لذا لا تتطلب أي اقتران (pairing)، أو تشفير، أو مصادقة. يمكن لأي نظير ضمن نطاق الراديو قادر على الاتصال بجهاز يعمل بخادم OTS تمكين مؤشرات OACP وكتابة أمر "حساب التحقق من الصحة" المكون من تسعة بايتات يفشل في التحقق — على سبيل المثال عن طريق إصداره دون تحديد أي كائن، مما يعيد BT_GATT_OTS_OACP_RES_INV_OBJ. لأن دالة oacp_command_decode() تقبل رمز عملية حساب التحقق من الصحة بشكل غير مشروط (وليس محميًا بواسطة CONFIG_BT_OTS_OACP_CHECKSUM_SUPPORT)، فإن التكوينات المبنية بدون دعم التحقق من الصحة قابلة للوصول أيضًا: فهي ترد بـ BT_GATT_OTS_OACP_RES_OPCODE_NOT_SUP وتأخذ المسار الخاطئ نفسه.
في التكوينات التي يكون فيها CONFIG_ASSERT مفعلاً، يؤدي السحب ذو الطول الصفر إلى تفعيلAssertion داخل net_buf_simple_pull_mem() وإحداث توقف مفاجئ (panic) للجهاز، مما يسبب حجبًا للخدمة مُثار عن بُعد. في التكوينات المعطلةAssertions لا يوجد تحقق: يعيد السحب مصفوفة المتراصة غير الملموسة ويتم نسخ أربعة بايتات من ذاكرة المتراصة غير المهيأة إلى المؤشر وإرسالها للنظير، وهي عملية قابلة للتكرار مع كل طلب. يقتصر الإفصاح على أربعة بايتات لكل طلب ويبقى الكتابة داخل مؤشر الاستجابة ذي السبعة بايتات، لذا لا يوجد تلف في الذاكرة؛ التأثير هو إفشاء ذاكرة غير مهيأة بالإضافة إلى فقدان التوفر في التكوينات التي تحتويAssertions مُفعلة.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.