Descripción
SOCFortress CoPilot se enfoca en ofrecer un panel único para todas las necesidades de operaciones de seguridad. En versiones anteriores a 0.1.77, `POST /api/scoutsuite/generate-gcp-report` en `backend/app/integrations/scoutsuite/routes/scoutsuite.py` admite a usuarios administradores y analistas y valida el contenido cargado como `GCPScoutSuiteJSON`, pero pasa el valor sin procesar de `file.filename` del encabezado multipart a `save_file_to_directory` en `backend/app/integrations/scoutsuite/services/scoutsuite.py`. La función de escritura combina este nombre de archivo con `scoutsuite-report` mediante `os.path.join` sin sanitización ni verificación de que la ruta resuelta quede contenida en el directorio. Por lo tanto, un nombre de archivo con recorrido de directorios (path traversal) escribe el JSON suministrado fuera del directorio de informes previsto. En el backend reportado, que se ejecuta como root, el investigador demostró escrituras con propietario root fuera de ese directorio y dentro del directorio del código fuente de la aplicación. Esto permite sobrescribir archivos del host, sujeto a la restricción de contenido JSON aceptado, y puede interrumpir el funcionamiento de la aplicación; la primitiva demostrada no establece la posibilidad de escribir contenido ejecutable sin restricciones ni una pérdida incondicional de confidencialidad entre inquilinos. La versión 0.1.77 elimina los nombres de archivo controlados por el solicitante en la ruta afectada; las afirmaciones sobre contenido sin restricciones y ejecución directa de código requieren una conciliación separada por parte del curador.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- CoPilot Afectadas: < 0.1.77
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/socfortress/CoPilot/security/advisories/GHSA-q3g8-3cf7-744f
- Referencia en github.comgithub.com/socfortress/CoPilot/pull/940
- Referencia en github.comgithub.com/socfortress/CoPilot/pull/941
- Referencia en github.comgithub.com/socfortress/CoPilot/commit/1881ef8d28bc7f45ffa88d7ba4fcca7…
- Referencia en github.comgithub.com/socfortress/CoPilot/commit/bfa630b65d554670c7462a32ce6fd4e…
- Referencia en github.comgithub.com/socfortress/CoPilot/tree/v0.1.77
Ver el texto original en inglés (CVE.org)
SOCFortress CoPilot: Arbitrary Host File Write as Root via Path Traversal in the ScoutSuite GCP Report Upload (RCE)
SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. Prior to 0.1.77, `POST /api/scoutsuite/generate-gcp-report` in `backend/app/integrations/scoutsuite/routes/scoutsuite.py` admits admin and analyst users and validates the uploaded content as `GCPScoutSuiteJSON`, but passes raw `file.filename` from the multipart header to `save_file_to_directory` in `backend/app/integrations/scoutsuite/services/scoutsuite.py`. The writer combines this filename with `scoutsuite-report` using `os.path.join` without sanitization or a resolved-path containment check. A traversal filename therefore writes the supplied JSON outside the intended report directory. In the reported root-running backend, the researcher demonstrated root-owned writes outside that directory and into the application source directory. This permits host-file overwrite subject to the accepted JSON-content constraint and can disrupt application operation; the demonstrated primitive does not establish unrestricted executable contents or unconditional cross-tenant confidentiality loss. Version 0.1.77 removes caller-controlled filenames from the affected route; unrestricted-content and direct-code-execution claims require separate curator reconciliation.