Popular extensión para Chrome tiene vulnerabilidades que permiten secuestrar cámaras web
La popular extensión Screencastify de Chrome solucionó una vulnerabilidad que permitía que sitios maliciosos secuestraran las cámaras web de los usuarios y robaran videos grabados. Sin embargo, aún existen fallas de seguridad que podrían ser aprovechadas por personas internas sin escrúpulos.
El proveedor reconoció la vulnerabilidad de secuencias de comandos entre sitios (XSS) y la arregló rápidamente. La corrección ocurrió después de que el investigador de seguridad Wladimir Palant la reportará responsablemente el 14 de febrero de 2022.
Sin embargo, los mismos riesgos relacionados con la privacidad y la seguridad siguen sin abordarse. Esto mantiene a los usuarios en riesgo potencial de los sitios web que se asocian con la plataforma Screencastify.
Palant decidió publicar un artículo en su blog para advertir a los millones de personas que usan Screencastify sobre los riesgos subyacentes. Según él, porque el proveedor no solucionó completamente los problemas después de tres meses.
Una herramienta de video conveniente
Screencastify es un grabador de pantalla, un editor de video y una extensión de navegador para compartir archivos multimedia con más de 10,000,000 de instalaciones en la Chrome Web Store.
El número de instalaciones puede ser mucho mayor, ya que los diez millones es la cifra máxima de descargas que admite la plataforma.
La popularidad de la herramienta se disparó durante la pandemia. Esto porque es una utilidad poderosa y fácil de usar que puede resultar útil en una variedad de tareas cotidianas.
La extensión está integrada con el sitio web del proveedor, lo cual es necesario para ofrecer la funcionalidad de edición de video. Desafortunadamente, si bien esto es conveniente y sencillo, también es una fuente de riesgos.
Acceso a Google Drive y API
El primer problema surge de la solicitud de Screencastify para acceder a Google Drive del usuario y crear un token de acceso permanente de Google OAuth para sus cuentas.
Este token de acceso es necesario para crear una carpeta visible (no oculta). La carpeta aloja los proyectos de video del usuario, que se cargan o descargan usando el servicio sin requerir acciones adicionales del usuario.
La plataforma también solicita permisos para acceder a la API de WebRTC una vez. Esto porque el acceso a las funciones de captura se habilita desde el primer intento de grabación del usuario.
Los permisos para acceder a la API de desktopCapture de Chrome y la API de tabCapture se otorgan automáticamente al instalar la extensión.
Activación silenciosa de la cámara web
Una vulnerabilidad XSS existente en el sitio web permite a los atacantes habilitar Screencastify para grabar un video, que se carga en Google Drive. Esta misma vulnerabilidad permite el robo del token OAuth de Google Drive, que los atacantes podrían usar para descargar el video creado y cualquier otra cosa almacenada en Google Drive.
Para empeorar las cosas, el investigador desarrolló un exploit PoC. Los atacantes pueden usar este exploit para iniciar la cámara web de los usuarios de la extensión Screencastify sin indicar la acción.
“El problema se encontraba en la página de error que se mostraba si ya enviaste un video y estabas tratando de enviar otro”.
“Esta página de error se encuentra en una dirección fija, por lo que se puede abrir directamente en lugar de desencadenar la condición de error”.
Explicación de Palant en el artículo de su blog.
Dado que aquí no se lleva a cabo ninguna validación, si el atacante envía este enlace a un objetivo y lo engaña para que haga clic en el botón “Ver en Classroom”, podría lograr una condición XSS.
El investigador desarrolló un ataque de secuestro de clics. Él creó una página de prueba que cargaba la página de error vulnerable en un frame invisible y colocaba el botón debajo del cursor de la víctima.
Una vez que el usuario hace clic con el mouse, que es la única acción requerida para que funcione el exploit, Screencastify recupera el token de acceso de Google, lo que hace posible la grabación de video o el acceso a Drive para el atacante.
Todavía existen problemas
Si bien Screencastify corrigió la vulnerabilidad XSS que permitía que cualquier sitio malicioso secuestrara cámaras web, aún existen problemas. Estos problemas podrían permitir que un empleado o un sitio comprometido grabe videos en silencio desde los dispositivos de los usuarios de Screencastify.
Según Palant, el dominio de Screencastify sirve para múltiples aplicaciones de varias empresas que utilizan el proyecto. En otras palabras, abre una gran superficie de ataque XSS.
Estas empresas son Webflow, Teachable, Atlassian, Netlify, Marketo y ZenDesk; todas controlan subdominios sin protección real en términos de seguridad del contenido.
- Webflow: www.screencastify.com
- Teachable: course.screencastify.com
- Atlassian: status.screencastify.com
- Netlifyrunning: quote.screencastify.com
- Marketo: go.screencastify.com
- ZenDesk: learn.screencastify.com
Según el analista, la última versión de Screencastify, 2.69.0.4425, aún es vulnerable a la API no autorizada y al acceso al token de Google OAuth. Además, el controlador para iniciar la grabación de video aún está presente.
“No parece haber cambiado mucho aquí, y pude verificar que todavía es posible iniciar una grabación con la cámara web sin ninguna pista visual”.
El proveedor le dijo a Palant que planean agregar una estricta política de seguridad de contenido. Sin embargo, esto aún no ha sucedido, por lo que los usuarios aún están en riesgo.
Incluso si las vulnerabilidades de XSS fueran abordadas por todas las empresas que usan Screencastify, la cuestión de la confianza hacia estas entidades permanece, ya que elegir usar la extensión es confiar a terceros el acceso completo a sus contenidos de Google Drive.
Todo lo que se necesita es que estos sitios sean modificados. La modificación la puede hacer un empleado deshonesto o un hacker que comprometa un sitio para, una vez más, grabar videos de las cámaras web de los usuarios de Screencastify.
Hasta el cierre de este artículo, Screencastify no ha brindado ninguna declaración pública sobre los problemas que aún persisten.