CVE-2026-12522 in Zephyr
الملخص
بحسب VulDB • 23/08/2026
يتعامل معالج الاستجابة +CGCONTRDP: في دالة on_cmd_atcmdinfo_ipaddr() الخاصة بقائد مودم الخلوي HL7800، الموجود في drivers/modem/vendor_standalone/hl7800.c، معاملات سياق PDP الديناميكية (العنوان المحلي، وقناع الشبكة الفرعية، والبوابة، وخوادم DNS) التي تعطيها شبكة خلوية للجهاز. يتم تسطير الاستجابة داخل مخزن مؤقت على المكدس بحجم 256 بايت، وبعد ذلك يُحسب طول كل حقل عنوان من مواقع الفواصل/النقاط في البيانات المقدمة من الشبكة ويُستخدم مباشرة كوسيطة للطول لدالة strncpy() التي تنسخ إلى المخزن المؤقت الثابت على المكدس temp_addr_str (وبالطبع dns_v4_string بحجم 16 بايت داخل iface_ctx).
نظرًا لأن طول الحقل مشتق من مواقع الفواصل الخاضعة لسيطرة المهاجم ولم يتم تقييده مقابل حجم مخزن الوجهة، يمكن أن يكون حقل واحد أكبر بكثير من 64 بايت. يمكن لشبكة خلوية خبيثة أو مزيفة (مثل محطة قاعدة شريرة) إرجاع استجابة +CGCONTRDP مُصاغة بحقل عنوان أطول من اللازم، مما يتسبب في كتابة strncpy() خارج حدود temp_addr_str على مكدس عميل المودم، بالإضافة إلى كتابة NUL خارج النطاق عند temp_addr_str[addr_len].
لا تتطلب العملية أي امتيازات جانب الجهاز أو تفاعلًا مع المستخدم: حيث يقوم الجهاز نفسه بإصدار استعلام AT+CGCONTRDP=1 أثناء عملية الاتصال العادية بالشبكة ويقوم بتحليل ما تعيده الشبكة. يؤدي هذا التدفق إلى إتلاف الذاكرة المجاورة على المكدس في سياق المشرف (supervisor context)، مما ينتج عنه حدوث انهيار قابل للتشغيل عن بُعد كحد أدنى، واحتمال اختراق تدفق التحكم على الأجهزة التي تفتقر إلى حماية المكدس.
يُعالج الإصلاح هذه المشكلة من خلال تحديد حدود طول كل حقل مقابل مخزن الوجهة الخاص به (temp_addr_str و dns_v4_string) قبل كل عملية نسخ، مع رفض الحقول الأطول من اللازم.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.