6 puntos por GN⁺ 2025-03-01 | Aún no hay comentarios. | Compartir por WhatsApp

"Claro, Firebase fue (en parte) la causa"

  • Se confirmó que durante el proceso de descarga del instalador del editor de IA Cursor, este intentaba conectarse a ToDesktop a través del firewall Lulu
    • ToDesktop es un servicio que ofrece empaquetado de apps Electron, SDK, actualizaciones, etc.
  • Se confirmó que la app estaba usando Firestore y se inició una investigación básica sobre Firebase mediante herramientas de desarrollo
    • Firebase: una plataforma backend para apps ofrecida por Google, que permite almacenamiento y procesamiento de datos del lado del cliente mediante una base de datos NoSQL llamada Firestore
  • Usando DevTools y sourcemaps, se revisaron las colecciones utilizadas en Firestore
  • Se encontró una colección llamada temporaryApplications, pero solo era una lista antigua y no contenía información sensible (no se había actualizado desde 2022)
  • Se confirmó que la mayor parte de la lógica principal y las tareas de despliegue se realizaban a través del paquete npm @todesktop/cli
  • @todesktop/cli también tenía sourcemaps, así que se utilizó sourcemapper para entender la estructura del código fuente original

Revisando ToDesktop CLI

  • ToDesktop CLI: se encarga de funciones clave como el despliegue de apps y la subida de código fuente
  • Al analizar los sourcemaps del CLI, se descubrió una vulnerabilidad que permitía intentar abusar de getSignedURL, una Firebase Cloud Function, para hacer cargas arbitrarias a S3, pero parecía difícil encontrar rutas de archivo realmente útiles

Secuestrar el pipeline de despliegue mediante un script postinstall

  • Objetivo: obtener ejecución de código en el contenedor (servidor) donde se ejecuta el build
  • Se insertó una carga de reverse shell en el script postinstall de package.json para recibir una conexión desde el contenedor de build
  • Se logró acceder con éxito al interior del contenedor y revisar la estructura del entorno de build y archivos importantes
  • Se identificó el archivo config.json.encrypted y también se descubrió el método de descifrado, lo que permitió extraer los secretos reales (config.json)
  • Además, dentro del entorno también se encontró una clave de Firebase Admin (con permisos amplios)

Post-exploitation

  • Con esta vulnerabilidad era posible desplegar actualizaciones de apps de forma arbitraria, permitiendo ejecutar código malicioso en cuanto los usuarios reiniciaran la aplicación
  • De hecho, tras desplegar una actualización en una app de prueba, se reprodujo del lado del cliente una RCE (ejecución remota de código)

Alcance del impacto

  • Como era posible desplegar actualizaciones maliciosas a cualquier app que usara ToDesktop, este problema podía afectar potencialmente a millones de usuarios
  • Apps mencionadas como ejemplo:
  • En particular, muchos de sus usuarios trabajan en TI y tecnología, por lo que un ataque podría tener consecuencias graves

The fix

  • Tras el reporte, se contactó de inmediato al equipo de ToDesktop para avanzar con la solución
  • ToDesktop resolvió el problema rápidamente y además otorgó una recompensa adicional
  • La arquitectura se modificó para que las tareas sensibles, como firma y subida, se ejecuten en un contenedor sidecar con permisos separados del contenedor de build
  • El informe oficial de incidente de seguridad de ToDesktop puede consultarse aquí
  • Un incidente de seguridad puede ocurrirle a cualquier empresa, pero lo importante es cómo responde, y ToDesktop dejó una impresión positiva por su reacción rápida y colaborativa

Aún no hay comentarios.

Aún no hay comentarios.