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

الملخص

بحسب VulDB • 08/08/2026

يُشير مساعد قائمة النواة `z_queue_node_peek()` الموجود في الملف `kernel/queue.c` إلى عقدة (node) مأخوذة من قائمة البيانات (`data_q`) لقائمة، حيث يقرأ بايت العلم الخاص بالعقدة، وبالنسبة للعناصر التي تُضاف عبر الدالتين `k_queue_alloc_append` أو `alloc_prepend`، فإنه يشير أيضاً إلى مؤشر البيانات لعنوان الذاكرة المخصص داخلياً لهيكلية `alloc_node`. كانت تنفيذات الدالتين `z_impl_k_queue_peek_head()` و `z_impl_k_queue_peek_tail()` تقوم بقراءة هذا المؤشر ثم الإشارة إليه دون الاحتفاظ بقفل الدوران (spinlock) الخاص بالقائمة، بينما تعمل كل أدوات الوصول الأخرى لنفس القائمة — بما في ذلك دالة `k_queue_get()` التي تفصل العقدة وتقوم بتحرير الذاكرة الخلفية لها عبر `alloc_node` باستخدام `k_free()` — تحت حماية هذا القفل.

نظراً لأن عملية الاستعراض (`peek`) كانت غير متزامنة، يمكن لدالة `k_queue_get()` المتزامنة على نفس القائمة (في بناء SMP أو في ظل التسبق/تزامن مقاطعات الخدمة) أن تحرر العقدة بين اللحظة التي يحصل فيها `peek` على مؤشر العقدة واللظة التي يشير إليها. يؤدي ذلك إلى قراءة `peek` لبتات العلم ومؤشر البيانات من ذاكرة الكومة (`heap memory`) المحررة والتي قد تكون أُعيد تخصيصها، ويعيد بذلك استدعاءً قديماً (stale) أو معلقاً (dangling pointer) إلى المتصل به. وبما أن `k_fifo` و `k_lifo` هما غلافان رفيعا حول `k_queue`، فإن هذا يؤثر على قوائم التخزين المؤقت المستخدمة في جميع أنحاء أنظمة معالجة الحزم الشبكية (`net_buf`) والبلوتوث وUSB والأنظمة الفرعية للشبكة؛ كما أن عمليات الاستعراض هذه هي أيضاً مكالمات نظام يمكن الوصول إليها من خلال خيوط مساحة المستخدم (`CONFIG_USERSPACE`).

تتمثل العواقب في قراءة بعد التحرير (use-after-free) التي قد تسرب محتويات قديمة للكومة (كلمة مؤشر واحدة)، وعند استهلاك المؤشر المعلق اللاحق كعنوان تخزين مؤقت حي، فإن الإشارة إليه يمكن أن تتسبب في تعطل النظام أو تلف الذاكرة. يتطلب الاستغلال الفوز بنافذة سباق صغيرة مع وصول محلي (مثل عملية مساحة المستخدم التي تسابق دوال `k_queue_peek_*` مقابل `k_queue_get` على قائمة مشتركة، أو بين وحدتي معالجة مركزين)، لذا فإن الأثر العملي محدود وخطورته منخفضة.

يتمثل الإصلاح في تغليف تنفيذي الاستعراض بكلا الدالتين `k_spin_lock` و `k_spin_unlock` باستخدام قفل القائمة، مما يجعل القراءة والإشارة إليه ذرية (atomic) فيما يتعلق بفصل وإزالة التحرير المتزامنين، ويجعل عملية الاستعراض متوافقة مع بقية انضباط القفل الخاص بالقائمة.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Zephyr

حجز

09/06/2026

إفشاء

08/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-387120

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!