CVE-2026-17054 in Zephyrالمعلومات

الملخص

بحسب VulDB • 21/09/2026

يقوم برنامج تشغيل Wi-Fi المستضاف على ESP من Espressif (drivers/wifi/esp_hosted/) بتحليل الإطارات التي تُستقبل عبر SPI من معالج المساعدة ESP في دالة esp_hosted_event_task(). بالنسبة للإطارات التحكمية، يأخذ حقل بيانات الطول-النوع-القيمة (TLV) ذي الـ 16 بت باسم data_length مباشرةً من الخط وينفذه إلى pb_istream_from_buffer(frame.data_value, frame.data_length) دون التحقق منه مقابل طول الإطار أو مخزن الاستقبال. يقع frame.data_value على بعد 26 بايت داخل كائن مكدس بحجم 3188 بايت، لذا فإن قيمة data_length تصل إلى 0xFFFF تجعل دالة pb_decode() تقرأ ما يصل إلى حوالي 62 كيلوبايت خارج نهاية ذلك الكائن.

يحمل فقط الجزء الأول من الاستجابة التحكمية المجزأة رأس TLV؛ حيث كان برنامج التشغيل السابق للإصلاح يقوم بمعاملات SPI نصف مزدوجة (half-duplex) ويتجاهل بصمت أي إطار يدرجه معالج المساعدة بينما كانت المضيف ينقل البيانات (حيث قام esp_hosted_hal_spi_transfer() بإسناد مخزن الاستقبال إلى مخزن الإرسال). عندما يكون الإطار المُتجاهل هو الجزء الأول من استجابة مجزأة، يعامل برنامج التشغيل الجزء التالي على أنه إطار جديد — حيث تكون رأس كل جزء وفحص التكرار الخاص به صحيحين، لذا تمر خطوات التحقق الاثنتين بنجاح — ويقوم بقراءة رأس TLV من بايتات الاستمرار الخاصة ببروتوكول buf (protobuf) الخام. تأتي هذه البايتات من استجابات تحكمية يكون حجمها ومحتواها قابلين للتأثير من قبل مهاجم غير مصرح له ومتصل مجاور، لا سيما قائمة مسح نقاط الوصول (AP scan list)، التي تتوسع مع عدد أطوال SSID لنقاط الوصول الموجودة ضمن نطاق الراديو.

الأثر هو حجب الخدمة وليس الإفشاء. إن القراءة خارج نهاية منطقة الذاكرة العشوائية (RAM) تسبب عطلًا في الجهاز، وبما أن CONFIG_NANOPB_ENABLE_MALLOC مُحدد بواسطة برنامج التشغيل، فإن بادئات الطول غير الصالحة المقروءة من الخارج تدفع أيضًا إلى عمليات تخصيص على الكومة (heap). لا تصل البايتات التي تم قراءتها خارج النطاق نفسها إلى التطبيق: فـ pb_decode() تبدأ في منتصف التدفق باستخدام بايتات استمرار protobuf الخام وبالتالي تفشل تقريبًا فورًا، وأي شيء يتم فك تشفيره سيحتاج بعد ذلك إلى المرور عبر esp_hosted_response()، والتي تتطلب تطابقًا دقيقًا لـ msg_id مع الطلب المعلق، ثم esp_hosted_ctrl_response()، والتي تتطلب استجابة نجاح — حيث يؤثر المهاجم على حجم ومحتوى الاستجابات التحكمية المشروعة، وليس البنية التي يتم فك تشفيرها من بايتات غير محاذاة. يجعل عيبان مرتبطان في مسار الاستقبال نفسه حجب الخدمة دائمًا: كان حاجز تجميع الأجزاء مُقاسًا بـ ESP_FRAME_SIZE بدلاً من ESP_FRAME_MAX_PAYLOAD، وعند تفعيله، يعود من خيط الاستقبال الوحيد (RX thread) بدلًا من إسقاط الإطار، وتم إدراج الأحداث التحكمية غير المعالجة باستخدام k_msgq_put(..., K_FOREVER) على طابور ذي ثمانية عناصر لا يقوم أي شيء بتصريفه، مما يعطل ذلك الخيط نفسه. ليس لبرنامج التشغيل مسار مراقبة أو إعادة تشغيل، لذا فإن أيًا من الحالتين ينهي استقبال Wi-Fi بالكامل حتى يتم إعادة تشغيل الجهاز.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Zephyr

حجز

24/07/2026

إفشاء

22/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-408299

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!