
CVE-2021-27289: تجاوز حماية إعادة التشغيل على أجهزة Ksix Zigbee
مرحباً بالجميع،
أعتقد أن الأمر الاحترافي كان ببساطة تسمية هذا المستودع كما هو تمامًا – واضح، وصفي، وفي صلب الموضوع. لكن عندما كنت أجمّعه، خطرت ببالي بعض العناوين الأخرى، مثل:
على أي حال، هذه هي القصة.
بينما كنت أستعد للكشف عن ثغرة جديدة، تذكّرت شيئًا عملتُ عليه قبل سنوات - وهو خطأ اكتشفته أثناء مشروع التخرج أثناء بحثي في بروتوكولات إنترنت الأشياء مثل Thread وZigbee. في ذلك الوقت، أرسلت تقريرًا إلى MITRE لكنني لم أتلقَّ أي رد، فظننتُ أنه تم تجاهله فقط.
بدافع الفضول، قمت بتسجيل الدخول إلى حساب Gmail القديم الذي استخدمته للإرسال... ولدهشتي، في عام 2023 - بعد ثلاث سنوات - رأيت أنه تم تخصيص CVE بالفعل.
CVE-2021-27289، مرتبط بالثغرة التي أبلغتُ عنها كطالب.
لماذا استغرق الأمر كل هذا الوقت؟ عندما تواصلت أول مرة مع البائع، قالوا إنهم لا يملكون عددًا كافيًا من الموظفين لإصلاحها واستمروا في تكرار هذا العذر. أخبرت MITRE أنه لا يبدو أن أحدًا يفعل أي شيء حيالها، لذا أعتقد أنهم انتظروا - ربما لأن المشكلة لم يكن من المقرر إصلاحها على أي حال.
أثر هذا الخطأ على العديد من أجهزة إنترنت الأشياء القائمة على Zigbee والتي تصنعها Ksix. كانت المشكلة الأساسية هي أن آلية حماية إعادة التشغيل المعرّفة في مواصفة Zigbee والمطبَّقة عبر عدّاد الإطارات لم تكن منفَّذة بشكل صحيح.
نظرًا لأن الأجهزة لم تتحقق من عدّاد الإطارات بشكل صحيح، يمكن للمهاجم التواصل مع الشبكة وتزوير الحزم بمجرد زيادة رقم التسلسل إلى قيمة أعلى من آخر قيمة شاهدها الجهاز. هذا جعل من الممكن إعادة تشغيل الرسائل الملتقَطة وجعلها مقبولة كرسائل صالحة - مما أدى فعليًا إلى تجاوز للمصادقة.
يحتوي هذا المستودع على كل ما عملت عليه خلال مشروع التخرج:
أجهزة إنترنت الأشياء Zigbee من Ksix معرّضة لثغرة هجوم إعادة تشغيل ناتجة عن تنفيذ غير صحيح لآليات حماية إعادة التشغيل في Zigbee.
تم اختبار الإصدارات التالية وتبيّن أنها معرّضة للخطر. لم أختبر الإصدارات الأحدث، لذا قد تكون متأثرة أيضًا.
هذه المنتجات لم تعد متوفرة على موقع البائع أو على منصات مثل Amazon، ويبدو أنه تم إيقافها.
حزمة Zigbee في الأجهزة المتأثرة لا تطبّق بشكل صحيح آلية حماية إعادة التشغيل، التي تعتمد على حقل عدّاد الإطارات المعرّف في مواصفة Zigbee. هذا الحقل مخصص لضمان أن الرسائل المستلمة جديدة ولم تُعَد تشغيلها.
ومع ذلك، في هذا التنفيذ، يتم تجاهل عدّاد الإطارات أو لا يتم التحقق منه بشكل صحيح. نتيجة لذلك، يمكن للمهاجم التقاط حزمة Zigbee شرعية، وزيادة رقم التسلسل الخاص بها إلى قيمة أعلى (مثل 250)، وإعادة تشغيلها على الشبكة.
نظرًا لأن الأجهزة تتحقق فقط من رقم التسلسل، فإنها تقبل الرسالة كرسالة جديدة - مما يسمح باتصالات مزوّرة وإجراءات غير مصرح بها دون كسر أي مصادقة أو تشفير.
اعتمادًا على نوع الجهاز وكيفية دمجه في البيئة، قد يتسبب ذلك في ظهور تنبيهات كاذبة أو حالات استشعار مزيفة في التطبيق الذي استخدمه المستخدم أصلاً لإعداد الشبكة (مثل: اكتشاف حركة، فتح باب) - حتى لو لم يحدث شيء في الواقع. في الإعدادات الأكثر تعقيدًا، قد يؤدي ذلك إلى زعزعة استقرار سير العمل المؤتمت أو تشغيل إجراءات غير مقصودة بناءً على بيانات مزوّرة.
عادةً ما يتم تكوين هذه الأجهزة باستخدام تطبيقات مثل Tuya Smart أو منصات مشابهة، والتي تُشعر المستخدمين في الوقت الفعلي عند تفعيل مستشعر - على سبيل المثال، عند فتح باب أو اكتشاف حركة. هذا ما يجعل الهجمات التالية فعّالة بشكل خاص، حتى لو لم تحدث الأحداث الفعلية أبدًا.
على الرغم من أن الأثر المباشر لثغرة إعادة التشغيل هذه محدود، فإن الفهم الأعمق للبروتوكول - مثل ما استكشفته في مشروع التخرج - يكشف عن سيناريوهات هجوم أكثر تقدمًا يمكن تنفيذها بأقل الموارد.