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

الملخص

بحسب VulDB • 14/09/2026

تحتوي وظيفة sdio_io_rw_extended_helper() في نظام SDIO الخاص بـ Zephyr، والموجودة في الملف subsys/sd/sdio.c، على حلقة إدخال/إخراج بالبايت (byte-I/O) لإنهاء عمليات النقل، تستخدم القيمة `size = MIN(remaining, func->cis.max_blk_size)` كخطوة لكل تكرار. يتم فك تشفير قيمة `func->cis.max_blk_size` مباشرة من زوج البيانات CIS FUNCE الخاص ببطاقة SDIO في دالة sdio_decode_cis() دون التحقق من صحتها. وعندما تبلغ البطاقة عن حجم كتلة أقصى (max block size) يساوي صفراً، تكون القيمة `size` دائماً 0، ولا تنقص قيمة `remaining` أبداً، مما يؤدي إلى دوران الحلقة للأبد.

تُصل هذه الحلقة عبر واجهة عميل SDIO العامة المستخدمة من قبل برامج التشغيل (drivers)، بما في ذلك sdio_read_fifo() وsdio_write_fifo() ومساعدات القراءة/الكتابة لل Registers المتزايدة، حيث تدخل كل منها الحلقة مع الاحتفاظ بقفل القفاز الخاص بالبطاقة `func->card->lock`. وبالتالي، فإن بطاقة تعلن عن قيمة max_blk_size == 0 ستعلق (hangs) الخيط (thread) الذي يستدعيها بشكل دائم عند أول عملية نقل غير متوافقة مع حجم الكتلة (non-block-aligned)، ولن تطلق القفل أبداً، مما يؤدي إلى حرمان الخدمة من الطرفية SDIO (وأي نظام فرعي يعتمد عليها مثل Wi-Fi) حتى يتم إعادة تعيين الجهاز.

يجب أن تأتي القيمة الخبيثة من بطاقة SDIO نفسها، لذا فإن هذا العيب قابل للاستغلال في الحالات التي تحتوي فيها فتحة البطاقة القابلة للإزالة على بطاقات SDIO/مدمجة تتيح للمهاجم إدخال بطاقة مُعدّة بشكل خبيث أو معطلة (وهو متجه هجوم مادي)؛ أما في اللوحات ذات الطرفية SDIO الملحومة، فلا يمكن التأثير عليها من قبل المهاجم. لا يوجد تأثير على سلامة الذاكرة، أو السرية، أو السلامة (integrity)، بل فقط فقدان دائم للتوفر (availability). ويعيد التصحيح قيمة -EIO عندما تكون `func->cis.max_blk_size` صفراً، وذلك قبل الدخول إلى الحلقة.

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

مسؤول

Zephyr

حجز

16/07/2026

إفشاء

14/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-403614

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!