CVE-2026-61729
CriticalCVSS 9.4Summary
In SOCFortress CoPilot prior to 0.1.76, verify_graylog_header and verify_velociraptor_header authenticate webhooks against the same publicly hardcoded fallback header, also shipped in .env.example. Deployments with unchanged secrets let an anonymous caller bypass JWT authentication, invoke active-response actions and create forged alerts.
Risk Assessment
An attacker can disrupt endpoints and manipulate defensive controls by forwarding arbitrary commands to the Wazuh manager and drive attacker-controlled OpenSearch queries. The risk affects deployments with default or unset header secrets.
Recommendation
Update to version 0.1.76 and set unique GRAYLOG_API_HEADER_VALUE and VELOCIRAPTOR_API_HEADER_VALUE values. Ensure the Wazuh manager is reachable only from trusted sources.
Other vulnerabilities in SOCFortress CoPilot
See all- CVE-2026-61739High
In SOCFortress CoPilot prior to 0.1.77, the Velociraptor Sigma exclusion-management endpoints omit role and tenant authorization, and the exclusion creation endpoint does not properly validate credentials — any invalid, expired or forged Bearer token can create a suppression rule. Additionally, rules with a null customer_code apply across all tenants, and low-privilege users can list, modify, disable or delete exclusions.
- CVE-2026-61708High
In SOCFortress CoPilot prior to 0.1.76, the POST /api/agent_data_store/upload endpoint allows customer_user callers to choose bucket_name and object_name without an allowlist, tenant prefix, or ownership check. This enables overwriting objects belonging to any tenant, including sysmon configs, report templates, and case evidence. The issue is fixed in version 0.1.76.
- CVE-2026-61738Critical
In SOCFortress CoPilot prior to 0.1.77, the POST /api/scoutsuite/generate-gcp-report endpoint passes the raw multipart filename to the file writer without sanitization or a resolved-path containment check. A traversal filename therefore writes the supplied JSON outside the intended report directory, including into the application source directory.
- CVE-2026-61730Critical
In SOCFortress CoPilot, the unauthenticated /scoutsuite-report StaticFiles mount exposes the scoutsuite-report directory, disclosing HTML reports and result files containing AWS, Azure and GCP IAM principals, resource inventories and misconfigurations. During a GCP scan, the service-account key is saved into that same web-served directory and removed only after the scan finishes, so an anonymous client can retrieve it.
- CVE-2026-61728Critical
In SOCFortress CoPilot, portal users including customer_user accounts can submit stored markup via the alert comment endpoint, which is rendered without sanitization using v-html. This enables stored XSS, and because access and refresh tokens are persisted in JavaScript-readable storage, injected script can steal them and impersonate the viewer. The same unsanitized rendering affects other SOC fields (cases, assets, health-checks), with fixes first contained in versions 0.1.70 (health-check) and 0.1.76 (comments and other SOC sinks).
- CVE-2026-61707Critical
In SOCFortress CoPilot prior to 0.1.76, case-report templates uploaded by the lowest-privilege customer_user role are later executed by non-sandboxed Jinja2 engines when an admin or analyst generates a report. Lack of template content validation and cross-tenant scoping allows an attacker to inject malicious Jinja expressions that are evaluated as Python on the backend.
- CVE-2026-42869Critical
In versions prior to 0.1.57, SOCFortress CoPilot contained a hardcoded JWT signing secret, allowing attackers to forge admin-scoped tokens. If JWT_SECRET is not set, all authentication tokens are signed with this publicly known key.
Original NVD description (English source)
SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. Prior to 0.1.76, `verify_graylog_header` in `backend/app/active_response/routes/graylog.py` and `verify_velociraptor_header` in `backend/app/incidents/routes/incident_alert.py` authenticate webhooks against `GRAYLOG_API_HEADER_VALUE` and `VELOCIRAPTOR_API_HEADER_VALUE` with the same publicly hardcoded fallback. The same default is shipped in `.env.example`. Deployments that leave either setting unset or unchanged permit an anonymous caller with the known header value to bypass the JWT authentication required by normal APIs. `POST /api/graylog/invoke` forwards attacker-selected `COMMAND`, `ACTION`, `VALUE` and `AGENT_ID` to the configured Wazuh manager without the command-enum validation of the authenticated invocation route, allowing active-response scripts to disrupt endpoints and manipulate defensive controls. `POST /api/incidents/alerts/create/threshold` and `POST /api/incidents/alerts/create/velo-sigma` accept forged alerts for arbitrary `customer_code` values and drive attacker-controlled OpenSearch queries. Active-response delivery requires a configured reachable Wazuh manager. Deployments with independently changed header secrets are not subject to this default-secret bypass. This issue is fixed in version 0.1.76.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

