CVE-2026-61728
SOCFortress CoPilot: Stored comment and SOC-field XSS permits privileged account takeover
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.9
SOCFortress CoPilot: Stored comment and SOC-field XSS permits privileged account takeover
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.
- Record
CVE-2026-61728- CVSS 3.1
- 9.9 Critical
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H - Weakness
- CWE-79, CWE-922
- Updated
- 2026-11-05
EUVDEUVD-2026-113993
9.9
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.
- Record
EUVD-2026-113993- CVSS 3.1
- 9.9 Critical
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H - Updated
- 2026-11-05
NVD
9.9
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.
- Record
CVE-2026-61728- CVSS 3.1
- 9.9 Critical
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H - Weakness
- CWE-79, CWE-922
- Updated
- 2026-11-05
OSV
9.9
SOCFortress CoPilot: Stored comment and SOC-field XSS permits privileged account takeover
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.
- Record
CVE-2026-61728- CVSS 3.1
- 9.9 Critical
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H - Weakness
- CWE-79, CWE-922
- Updated
- 2026-11-07
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| facts, references | CVE List | |
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-61728 is a critical vulnerability (CVSS 9.9) in Socfortress Copilot, published October 30, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.46%, the 39th percentile. No source names a fixed version.
References
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
github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61728.json
nvd.nist.gov/vuln/detail/CVE-2026-61728