Skip to main content

SOCFortress CoPilot EUVDEUVD-2026-113994

| CVE-2026-61729 CRITICAL
Missing Authentication for Critical Function (CWE-306)
2026-10-30 GitHub_M
9.4
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify exposed CoPilot webhook endpoint
  2. Delivery
    Send POST with publicly known default header
  3. Exploit
    Bypass JWT via hardcoded fallback secret
  4. Execution
    Forward attacker COMMAND/ACTION/AGENT_ID to Wazuh manager
  5. Impact
    Disrupt endpoints and inject forged SOC alerts

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitable when GRAYLOG_API_HEADER_VALUE and/or VELOCIRAPTOR_API_HEADER_VALUE are left unset or unchanged from the default shipped in .env.example, because both validators fall back to the public constant ab73de7a-6f61-4dde-87cd-3af5175a7281; the attacker simply sends that value in the Graylog (or Velociraptor) request header to pass the gate with no JWT. For the active-response impact on endpoints (POST /api/graylog/invoke), a configured and reachable Wazuh manager must exist - without it the forwarded PUT fails. Unauthenticated alert injection via POST /api/incidents/alerts/create/threshold and /velo-sigma requires no such backend and succeeds directly (HTTP 200). LIMITING FACTORS: deployments that independently changed both header secrets are NOT subject to this default-secret bypass; endpoint-disruption severity depends on a live Wazuh manager and valid agent IDs.

Impact

The signals are largely consistent and point to a genuine priority for anyone actually running SOCFortress CoPilot. The CVSS 9.4 vector (AV:N/AC:L/PR:N/UI:N) is credible: the gating secret is a constant hardcoded in the public source and shipped in .env.example, so a default deployment is effectively unauthenticated over the network - PR:N is justified not by a weak password but by a publicly known value. The vuln.today Decision label is act_now, and the GHSA advisory includes a reporter-confirmed, live reproduction, so this is not a theoretical high-CVSS finding. However, no CISA KEV listing and no EPSS score were supplied, so there is no evidence of observed in-the-wild exploitation - the exploitation signal rests on the published PoC, not telemetry. Two caveats temper the raw score: (1) the CVSS confidentiality metric is only C:L, and the real severity is the integrity/availability impact on defensive tooling (active-response control plane and SOC alert pipeline), which the I:H/A:H metrics capture; (2) the most damaging effect - pushing active-response commands to endpoints - is conditioned on a configured, reachable Wazuh manager (the advisory notes the lab call returned 500 only because the manager was unreachable), whereas unauthenticated alert injection succeeded unconditionally (HTTP 200). Prevalence is the main down-weighting factor: CoPilot is a niche open-source SOC platform, so the aggregate exposure is far smaller than the 9.4 suggests. Net: treat as urgent for CoPilot operators that never changed both header secrets; broad internet-wide mass exploitation is less likely given the limited footprint.

Exploit ScenarioDerived

A remote, unauthenticated attacker locates an internet-reachable CoPilot backend and sends POST /api/graylog/invoke carrying the publicly known default Graylog header value, bypassing the JWT required by every normal API. They supply attacker-chosen COMMAND/ACTION/VALUE/AGENT_ID that CoPilot forwards to the configured Wazuh manager to trigger active-response (e.g. DNS sinkhole or firewall block) on any agent, or forge SOC alerts for an arbitrary customer_code via the threshold/velo-sigma routes. A reporter-confirmed PoC with working curl commands exists in the GHSA advisory, demonstrated live against the official copilot-backend:latest image.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

Unauthenticated active-response invocation and alert injection affect SOCFortress CoPilot deployments prior to 0.1.76 that leave GRAYLOG_API_HEADER_VALUE or VELOCIRAPTOR_API_HEADER_VALUE unset or unchanged, because both webhook header validators fall back to the same public constant shipped in .env.example. A remote attacker who supplies that known header value bypasses the JWT authentication that gates every other API, reaching POST /api/graylog/invoke to forward attacker-chosen COMMAND, ACTION, VALUE and AGENT_ID to the configured Wazuh manager (without the command-enum validation enforced on the authenticated invocation route), and reaching the threshold and velo-sigma alert routes to forge alerts for arbitrary customer_code values and drive attacker-controlled OpenSearch queries. The vendor's own advisory reports a confirmed live proof of concept against the published copilot-backend image; no CISA KEV entry is recorded and no EPSS score was supplied, but the priority decision label is act_now given the default-deployment exposure. Active-response delivery additionally requires a configured reachable Wazuh manager, and deployments that independently changed both header secrets are not subject to this bypass.

RemediationAI

Vendor-released patch: upgrade to CoPilot 0.1.76, which makes verify_graylog_header and verify_velociraptor_header fail closed (the environment variable is read with no default and the request is denied with HTTP 403 when unset), empties the two placeholder values in .env.example, and constrains COMMAND to a bare script-name token shape on the Graylog schema. The changes are visible in PR https://github.com/socfortress/CoPilot/pull/939 and commit https://github.com/socfortress/CoPilot/commit/1b2c3f97243988301285b395ce4239769c66bd9e, with the advisory at https://github.com/socfortress/CoPilot/security/advisories/GHSA-x8gc-f8p4-frc2. For deployments that cannot upgrade immediately, the vendor's remediation guidance is to set GRAYLOG_API_HEADER_VALUE and VELOCIRAPTOR_API_HEADER_VALUE to unique random values (for example from openssl rand -hex 32) instead of the shipped constant - note that pre-fix code still accepts an unset variable via the hardcoded fallback, so the variables must be explicitly populated, not merely removed from configuration - and to restrict network reachability of the /api/graylog/invoke and /api/incidents/alerts/create/* endpoints to trusted webhook senders; the trade-off is that any legitimate Graylog or Velociraptor integration must be updated with the new header value at the same time, and restricting network paths may break collectors that share a network segment.

Affected VersionsENISA

CoPilot < 0.1.76

Affected Packages

euvd copilot fix: 0.1.76

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CoPilot is a SOC platform that aggregates security operations tooling, and its backend is a FastAPI/Python service where normal API endpoints require JWT authentication. Two webhook entry points instead authenticate solely on a static shared header: verify_graylog_header in backend/app/active_response/routes/graylog.py compared the Graylog header against os.getenv("GRAYLOG_API_HEADER_VALUE", "ab73de7a-6f61-4dde-87cd-3af5175a7281"), and verify_velociraptor_header in backend/app/incidents/routes/incident_alert.py did the same for the Velociraptor header against VELOCIRAPTOR_API_HEADER_VALUE with the identical fallback. .env.example shipped both variables set to that same constant, so following documented setup produced a publicly known secret. This is CWE-306 (Missing Authentication for Critical Function) compounded by CWE-798 (Use of Hard-coded Credentials) per the advisory. The gray log handler built the Wazuh active-response payload directly from request fields (COMMAND concatenated with "0", ACTION and VALUE placed in the alert object, AGENT_ID used in agents_list) and issued a PUT to /active-response on the Wazuh manager, skipping the ActiveResponsesSupported enum check that the JWT-protected /api/active_response/invoke route enforces. The threshold and velo-sigma handlers accept alert payloads keyed by customer_code and build OpenSearch queries from them. The fix makes both validators fail closed: the environment variable is read with no default and a 403 is returned when it is unset, mirroring verify_grafana_header, plus a regex constraint (bare script names of letters, digits, underscore or hyphen, max 64 chars) is applied to COMMAND in the Graylog schema.

Know when Copilot gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 9.4 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
vuln.today AI 9.4 CRITICAL

Publicly hardcoded default header means effectively no authentication (PR:N) over the network (AV:N/AC:L); impact is high integrity/availability of defensive controls with only limited confidentiality (C:L).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 16:03 EUVD
CVE Published
Oct 30, 2026 - 14:24 cve.org
CRITICAL 9.4

DescriptionCVE.org

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.

Technical POC Analysis

CWE-306: Missing Authentication for Critical Function, caused by a hard-coded fallback secret - CWE-798.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-61729 is a critical (CVSS 9.4) unauthenticated vulnerability in SOCFortress CoPilot deployments prior to 0.1.76, enabling remote attackers to bypass authentication and execute arbitrary active-response commands or inject forged alerts. This directly threatens the integrity and availability of security operations for any customer running the affected image with misconfigured webhook secrets, and could be leveraged to disrupt incident response or poison monitoring data across the organization.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigation: set unique, non-default values for GRAYLOG_API_HEADER_VALUE and VELOCIRAPTOR_API_HEADER_VALUE, and restrict network access to the Copilot API to trusted IPs only.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Low
niche open-source SOC/SIEM management platform, limited production footprint
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +47
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy