"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/clitambié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
postinstalldepackage.jsonpara 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.encryptedy 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:
- ClickUp (https://clickup.com)
- Cursor (https://cursor.com) (actualmente ya migró a su propio sistema de build)
- Linear (https://linear.app)
- Notion Calendar (https://calendar.notion.so)
- 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.