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

الملخص

بحسب VulDB • 09/10/2026

يحتوي ملف الخلفية الخاص بواجهة الأوامر المستضافة لـ ITE IT8xxx2 SHI (subsys/mgmt/ec_host_cmd/backends/ec_host_cmd_backend_shi_ite.c) على ثغرة حيث يقوم بنسخ رأس طلب الأمر المستضاف المكون من 8 بايتات مباشرةً من FIFO الاستقبال عبر SPI إلى مخزن الاستلام المشترك data->in_msg، ثم يتحقق لاحقاً من إصدار البروتوكول وطول الحزمة المشتق. كما يقبل معالج المقاطعة أيضاً تأكيد اختيار الشريحة (chip-select) ومقاطعة طول استقبال صالح (RVLI) في أي حالة للسائق غير SHI_STATE_DISABLED، مما يسمح بتحليل رأس جديد بينما لا يزال خيط الأمر المستضيف يعالج الطلب السابق من نفس المخزن تماماً.

يعمل المعرب الرئيسي كمراقب SPI ويقود كلًا من اختيار الشريحة والساعة. بعد إرسال طلب سليم الشكل، يمكنه إلغاء تأكيد اختيار الشريحة فوراً — وهو ما يُعيد السائق إلى الحالة الجاهزة ويعيد تمكين FIFO — ويبدأ معاملة ثانية تحمل رأساً يحتوي على data_len = 0xFFFF. تُكتب هذه البايتات الثمانية في in_msg قبل رفض الطول الزائد عن الحد، مما يعني أنها تستقر في مخزن كانت محتوياته قد تحقق منها دالة verify_rx() الموجودة في subsys/mgmt/ec_host_cmd/ec_host_cmd_handler.c بالفعل. إذا وقع هذا ضمن النافذة الزمنية التي يسبق فيها تنفيذ خيط الأمر المستضيف لسطر args.input_buf_size = rx_header->data_len، فإن الإطار البرمجي يمرر طول إدخال يبلغ 65535 بايتاً إلى معالج الأوامر المسجل عبر مخزن سعة 256 بايتاً.

النتيجة هي قراءة خارج الحدود (out-of-bounds) تمتد لما يقارب 64 KiB ما بعد مخزن الطلب: حيث تكشف معالجات الأوامر التي تنسخ أو تعيد طباعة input_buf_size بايتات ذاكرة المتحكم المدمج المجاورة إلى المستضيف، أو تسبب تجاوزاً للمخزن الاستجابة (buffer overflow)، كما أن القراءة لما وراء نهاية SRAM تؤدي إلى عطل في المتحكم. تسمح نفس حالة السباق (race condition) أيضاً بتبديل cmd_id وcmd_ver بعد التحقق من المجموع الاختباري وبعد البحث عن المعالج. تتطلب الاستفادة من الثغرة القدرة على قيادة bus SHI بين المعالجات (نظام تشغيل مستضيف مخترق أو وصول مادي إلى خطوط SPI) والفوز في سباق التوقيت، وهو أمر يمكن لمراقب SPI إعادة المحاولة فيه بشكل لا نهائي.

تقوم الإصلاحات بتحليل الرأس في بنية محلية ec_host_cmd_request_header ونسخه إلى in_msg فقط بعد تحديد الطول بواسطة sizeof(data->in_msg)، وتتجاهل مقاطعات اختيار الشريحة وRVLI خارج حالتي SHI_STATE_READY_TO_RECV/SHI_STATE_RECEIVING. يبقى سباق محدود متبقي: حيث تعيد مقاطعة نهاية المعاملة تعيين الحالة إلى الجاهزة بينما يمتلك خيط الأمر المستضيف المخزن، لذا لا يزال بإمكان طلب ثاني صالح أن يتجاوز محتويات الطلب الجاري تنفيذه (in-flight)، على عكس خلفية NPCNX التي تتوقف في حالة SHI_STATE_CNL_RESP_NOT_RDY أثناء استخدام المخزن.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Zephyr

حجز

11/08/2026

إفشاء

09/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-415745

EPSS

0.00091

KEV

لا

النشاطات

منخفض

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!