Así que puedo enviar una solicitud POST a VulnWebSite.com:8008/apps/Youtube con un cuerpo JSON que contiene los datos {‘v’:’VIDEO_ID_HERE’}. Así que básicamente la vulnerabilidad aquí es que cualquiera que envíe una solicitud de correo a su dispositivo chromcast puede hacer que su TV reproduzca un video de youtube. Todo esto es sin autenticar.
Luego intenté buscar la documentación de la API pero no pude lo que quería. Entonces me encontré con la documentación no oficial de la API publicada por otra persona (documentación de la API). También encontré otra documentación que aparece a continuación.
- chromecast python script
- chromecast urls list
Después de leer la documentación tenía una idea mucho mejor de cómo funcionaba el dispositivo y sabía más o menos cómo el hacker había realizado el ataque.
El ataque
Así que primero debemos crear algún tipo de huella digital para identificar los dispositivos chromecast que tienen este endpoint de la API expuesto. Esto se puede hacer fácilmente enviando una petición GET al endpoint /setup/eureka_info que está documentado aquí(device-info API documentation). Esto devolverá un objeto json que contiene la versión de construcción, la información del dispositivo, la clave pública, y más. Este es el mismo api endpoint que shodan.io utiliza para tomar la huella digital de los dispositivos chromcast.
Ahora que podemos identificar los dispositivos chromcast todo lo que tenemos que hacer es enviar el payload de youtube al endpoint «/apps/YouTube» que descubrimos antes. Después de eso, el televisor del usuario se verá obligado a reproducir el vídeo que quieras que reproduzca. También puedes hacer otras cosas como listar los puntos de acceso circundantes y los dispositivos bluetooth o cualquier cosa que aparezca en la documentación de la API. Todo esto se puede hacer sin autenticar, por supuesto.
Universal Plug and Play
Este ataque es sencillo y casi cualquiera puede llevarlo a cabo armado con este conocimiento. Lo que empeora las cosas es que Chromecast hace uso de Universal Plug and Play (UPnP). Si no sabes lo que hace UPnP, básicamente atraviesa tu firewall. Esto significa que el dispositivo Chromecast hace uso de UPnP para abrir el puerto 8008 en su router y reenvía todo el tráfico al dispositivo Chromecast. Si tu router tiene UPnP habilitado, que es lo que hacen casi todos por defecto, tu dispositivo Chromecast se abrirá a Internet. Esto significa que cualquier persona será capaz de controlar su dispositivo chromecast y el televisor al que está conectado desde Internet sin autenticar.
Conclusión
Creo firmemente que google es realmente una gran empresa. Hacen mucho por protegernos cada día y también protegen a otras empresas y dispositivos gracias al proyecto cero. Por muy bueno que seas algunas cosas se te escapan. Ocurre todo el tiempo. Google ya ha mencionado que va a lanzar una actualización en las próximas semanas. Probablemente es mejor bloquear UPnP completamente ya que hay muchos otros dispositivos IOT que podrían ser vulnerables. Piénsalo, si un dispositivo de Google es vulnerable a un exploit de API no autenticado, ¿cuántos otros dispositivos lo son?
Leave a Reply