ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
تقوم فئة نقل Bluetooth HCI USB في حزمة أجهزة USB الجديدة subsys/usb/device_next/class/bt_hci.c بنسخ كل حزمة HCI من وحدة التحكم إلى المضيف في مخزن نقل USB مؤقت قبل وضعها في طابور نقطة النهاية. قام bt_hci_tx_sync_in() بتخصيص هذا المخزن المؤقت من bt_hci_ep_pool، وهو مخزن مؤقت ثابت فتحاته بحجم USBD_MAX_BULK_MPS بايت فقط (64 بايت في الإنشاءات المخصصة للسرعة الكاملة فقط)، ثم أجرى عملية net_buf_add_mem(buf, bt_buf->data, bt_buf->len) دون أي تحقق من الطول. يتم تحديد حجم مخازن أحداث HCI و ACL بواسطة CONFIG_BT_BUF_EVT_RX_SIZE و CONFIG_BT_BUF_ACL_RX_SIZE ويمكن أن تكون أكبر بكثير، لذا فإن النسخ يتجاوز نهاية الفتحة ذات الـ 64 بايت إلى الفتحات المجاورة وما يلي المخزن المؤقت المخصص بشكل ثابت. يقوم الجهاز بتشغيل وحدة تحكم بلوتوث المحلية في وضع HCI الخام (CONFIG_BT_HCI_RAW)، لذا تنشأ الحزم كبيرة الحجم عبر الهواء. مع أحجام مخازن HCI الموصى بها لوحدة التحكم كاملة الميزات، يمكن لمهاجم دون مصادقة ضمن نطاق بلوتوث توفير البايطات التي تتسبب في الفيضان: يمكن لنظ متصل يتفاوض على امتداد طول البيانات إرسال أجزاء ACL تصل إلى CONFIG_BT_CTLR_DATA_LENGTH_MAX بايت، والمهاجم الذي يقوم فقط بث بيانات الإعلان الموسعة يصل إلى نفس المسار من خلال أحداث تقرير إعلان LE الموسع، والتي تقسمها وحدة التحكم فقط حتى CONFIG_BT_BUF_EVT_RX_SIZE. في الإعداد الافتراضي، يتم الوصول إلى الفيضان بالفعل دون أي حركة مرور لاسلكية: حدث اكتمال أمر قراءة الأوامر المدعومة الإلزامي هو 70 بايت ويتجاوز الفتحة ذات الـ 64 بايت بستة بايتات في كل عملية تهيئة للمضيف. نظرًا لأن net_buf_add_mem() يتحقق من صحة المساحة المتبقية من خلال تأكيد فقط ما لم يتم تمكين CONFIG_NET_BUF_HARDENING، فإن الإنشاءات التي تحتوي على CONFIG_ASSERT=n -وهو إعداد الإنتاج المعتاد- تقوم بصمت بإفساد الذاكرة المجاورة لمخزن USB المؤقت بمحتويات يختارها المهاجم، مما قد يؤدي على هدف بدون حماية الذاكرة بين الأنظمة الفرعية إلى تنفيذ أوامر عن بُعد. الإنشاءات التي تحتوي على تأكيدات ممكّنة تفشل في التأكيد وتتعطل، مما يعطي...