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

الملخص

بحسب VulDB • 05/10/2026

يحتوي مُصحِّح مكالمات النظام (system-call verifier) الخاص بـ `i3c_do_ccc()` في الملف `drivers/i3c/i3c_handlers.c` على عيب حيث يقوم بالتحقق من الهيكل الخارجي `struct i3c_ccc_payload`، ومنطقة بيانات البث `ccc.data`، ومصفوفة `targets.payloads[]`، لكنه لا يتحقق من مناطق البيانات الخاصة بكل هدف (per-target data buffers) التي تشير إليها عناصر هذه المصفوفة. يحمل كل هيكل `i3c_ccc_target_payload` مؤشر بيانات خاص به وطولاً للبيانات (`data_len`)، ولم يتم تمرير أي منهما عبر دالة التحقق `K_SYSCALL_MEMORY()` قبل تسليم الحمولة إلى `z_impl_i3c_do_ccc()` ثم إلى برنامج تشغيل وحدة التحكم. كما أن المُصحِّح يعمل على الهيكل الحي (live structure) الخاص بالمتصل بدلاً من لقطة ثابتة (snapshot)، مما يعني أنه يمكن لخيوط مستخدم ثانية تغيير الحقول التي تم التحقق منها بين وقت الفحص واستخدامها بواسطة البرنامج التشغيلي — على عكس الدالة الشقيقة `z_vrfy_i3c_transfer()`، والتي كانت تنسخ مصفوفة الرسائل الخاصة بها أولاً دائماً.

هذا العيب موجود فقط في عمليات البناء المفعّلة فيها خيار `CONFIG_USERSPACE`، حيث يتم تجميع الملف `drivers/i3c/i3c_handlers.c`. يمكن لخيوط المستخدم غير المميزة (unprivileged user-mode thread) التي تم منحها حق الوصول إلى كائن جهاز وحدة التحكم I3C — وهو الطريق المعتاد الذي تسمح به التطبيقات لخيط مستخدم بالتواصل مع وحدات الطرفية I3C — إصدار مكالمات CCC مباشرة، حيث يشير مؤشر بيانات الحمولة المستهدفة إلى عنوان نواة عشوائي. تقوم برامج تشغيل وحدة التحكم بإلغاء مرجعية هذا المؤشر بشكل مباشر (على سبيل المثال في `drivers/i3c/i3c_mcux.c`، و`drivers/i3c/i3c_cdns.c`، و`drivers/i3c/i3c_stm32.c`، و`drivers/i3c/i3c_npcx.c`)، مستخدمةً العلم `rnw` لتحديد الاتجاه.

وبالتالي، فإن مكالمات القراءة (read CCC) تسبب في كتابة البرنامج التشغيلي الذي يعمل في وضع النواة للبيانات المستلمة عبر الناقل إلى عنوان نواة يختاره المهاجم ولطول يحدده المهاجم، بينما تنقل مكالمات الكتابة (write CCC) ذاكرة النواة إلى ناقل I3C. النتيجة هي عملية كتابة خارج الحدود (out-of-bounds kernel write) بالإضافة إلى كشف لذاكرة النواة، أي تصعيد للصلاحيات من خيط في وضع المستخدم إلى امتياز المشرف (supervisor privilege)، مما يفشل العزل الذي يهدف خيار `CONFIG_USERSPACE` إلى توفيره.

يُدخل الإصلاح دالة جديدة تسمى `copy_ccc_and_do()`، والتي تأخذ لقطة للحمولة، وتنسخ مصفوفة الأهداف إلى ذاكرة النواة باستخدام `k_usermode_alloc_from_copy()` (مع تحديد عدد الأهداف بأقل من 32)، وتتحقق من كل منطقة بيانات مستهدفة باستخدام `K_SYSCALL_MEMORY()` وفقاً لقيمة `rnw`، ثم تنسخ حقول `num_xfer` و`err` المكتوبة بواسطة البرنامج التشغيلي مرة أخرى إلى المتصل.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

مسؤول

Zephyr

حجز

06/08/2026

إفشاء

05/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-413530

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Interested in the pricing of exploits?

See the underground prices here!