CVE-2026-61728 XSS almacenado en comentarios y campos SOC de SOCFortress CoPilot permite toma de control de cuentas
SOCFortress CoPilot, en versiones afectadas anteriores a las reparaciones 0.1.70 y 0.1.76, permite a usuarios del portal, incluido customer_user, enviar marcado almacenado mediante POST /api/incidents/db_operations/alert/comment. En AlertComment.vue, commentHtml pasa el resultado a v-html sin escapar ni sanitizar, por lo que el script almacenado se ejecuta en el origen de la aplicación cuando otro usuario ve la alerta; el mismo patrón afecta campos SOC de casos, activos y health-check almacenados en el servidor.
CVSS 3.1
- Probabilidad de explotación · EPSS del 09/110,5 % · percentil 40
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
socfortress CoPilot
< 0.1.76
Qué hacer
- Verificá si usás CoPilot y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 3.1 · 9.9 CRÍTICA
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- Vector de ataqueRed
- Complejidad del ataqueBaja
- Privilegios requeridosBajos
- Interacción del usuarioNinguna
- AlcanceCambiado
- ConfidencialidadAlta
- IntegridadAlta
- DisponibilidadAlta
Descripción original
SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. In affected snapshots preceding the respective 0.1.70 and 0.1.76 sink repairs, portal users, including `customer_user`, can submit stored markup through `POST /api/incidents/db_operations/alert/comment`. In `customer-portal/src/components/alerts/AlertDetails/AlertComment.vue`, `commentHtml` replaces newlines in `comment.comment` but passes the result to `v-html` without escaping or sanitizing HTML. When another user views the poisoned alert, stored script executes on the application origin; the same unsanitized rendering pattern affects server-stored SOC case, asset and health-check fields in `SocCaseNote.vue`, `SocCaseItem.vue`, `SocCaseAssetsItem.vue`, `SocAlertAssetsItem.vue` and `HealthcheckItem.vue`. The authentication store in `customer-portal/src/stores/auth.ts` persists both access and refresh tokens in JavaScript-readable storage, and `customer-portal/src/api/httpClient.ts` uses bearer headers rather than HttpOnly cookies. An injected script can steal both tokens, impersonate the viewer and obtain fresh tokens through `/auth/refresh`. If an analyst or administrator views the poisoned alert or case, this enables persistent privileged account takeover, cross-tenant data access, incident modification or deletion, and detection/response subversion. The health-check sink repair is first contained in version 0.1.70, while the comment and other SOC sink repairs are first contained in version 0.1.76. Version 0.1.76 is the provisional first release containing all observed repairs; grouped versus split CVE scope requires curator adjudication.
Referencias (6)
- github.com/socfortress/CoPilot/security/advisories/GHSA-8hqj-cqcc-5f6w
- github.com/socfortress/CoPilot/pull/904
- github.com/socfortress/CoPilot/pull/938
- github.com/socfortress/CoPilot/commit/461e8f84794aee8ada588de3bad79430dc9f4f3d
- github.com/socfortress/CoPilot/commit/ab9078bdee5d1c737f37f481103984665a670bdd
- github.com/socfortress/CoPilot/tree/v0.1.76
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.