Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend POST with arbitrary Bearer header
-
DeliverySentinel-string token result accepted as user
-
ExploitCreate null-tenant global suppression rule
-
ExecutionMatching Velociraptor Sigma alerts dropped at ingest
-
ImpactSOC blinded to attacker activity platform-wide
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | For the unauthenticated create: the target must run SOCFortress CoPilot prior to 0.1.77 with the backend API (e.g. ghcr.io/socfortress/copilot-backend) network-reachable; the attacker must include any Authorization: Bearer header (any invalid, expired or forged value suffices, because OAuth2PasswordBearer auto_error=True requires only header presence and decode_token never raises) - no valid account is needed. Setting customer_code=null makes the rule apply across all tenants. The suppression only has effect where the deployment actually ingests Velociraptor Sigma alerts via process_sigma_alert, and a rule only drops alerts that match its channel/title/field criteria, so impact depends on the attacker crafting a match for the activity they want hidden. The separate read/list/update/delete/toggle tampering path is limited by requiring a valid authenticated token (any role down to customer_user via get_current_user), but with no role or tenant restriction. |
| Impact | This is a genuine authorization/authentication-bypass issue (CWE-287 plus CWE-862 per the GHSA), not a severity-inflated finding. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N, 7.5) is internally consistent with the source evidence: the create endpoint is reachable over the network with no valid credentials because OAuth2PasswordBearer only enforces that an Authorization: Bearer header is present, while decode_token returns the sentinel strings 'Invalid token'/'Expired signature' instead of raising, and return_username_for_logging passes them through - so PR:N and AC:L are justified and the impact is squarely integrity (detection-suppression rules created/modified/deleted). No KEV entry and no EPSS score are present in the input, so there is no quantitative exploitation-probability or confirmed-in-the-wild signal to weigh; the vuln.today Decision label is 'this_week', below act_now/emergency. Against that, the GHSA advisory publishes a concrete two-request proof-of-concept with observed server output (created_by='Invalid token'), so exploitability is demonstrated even though active exploitation is not confirmed. The principal signals therefore agree on a real, promptly-actionable defense-evasion weakness in a security product, tempered only by the product's limited deployment footprint. Note one nuance the NVD vector flattens: the fully-unauthenticated path is the create endpoint (pure integrity), whereas the confidentiality exposure (enumerating detection-tuning data) and the cross-tenant global suppression via a null customer_code require an authenticated low-privilege customer_user - the NVD vector's C:N reflects the unauth attack, not the auth-gated information leak. |
| Exploit ScenarioDerived | An attacker with only network reachability to the CoPilot API sends a single POST to /api/incidents/alerts/create/velo-sigma/exclusion carrying any arbitrary Bearer header, creating a suppression rule with customer_code=null that matches their own tooling by channel, title or field regex; subsequent Velociraptor Sigma alerts for that activity are silently dropped before incident creation across every tenant. The GHSA advisory includes a working proof-of-concept demonstrating exactly this with two curl requests and the server's response showing created_by='Invalid token'. A low-privilege customer_user can additionally enumerate, modify, toggle or delete legitimate exclusion rules. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Unauthenticated attackers can install detection-suppression rules in SOCFortress CoPilot deployments before 0.1.77 because the Velociraptor Sigma exclusion endpoints never actually validate the bearer token they receive: an arbitrary, expired or forged value is decoded into a sentinel string ('Invalid token' / 'Expired signature') that is stored as the rule's creator instead of rejecting the request. A rule created with a null customer_code applies to every tenant, so matching Sigma alerts are silently dropped by process_sigma_alert before an incident is ever created, and any authenticated user down to the lowest-privilege customer_user role can additionally list, read, update, toggle and delete every exclusion because those routes carry no scope or tenant check. Version 0.1.77 fixes both paths. No confirmed active exploitation (not in CISA KEV) is reported, but the vendor advisory publishes a detailed two-step proof-of-concept reference for the unauthenticated create path that has not been independently validated here as working exploit code.
RemediationAI
Vendor-released patch: 0.1.77 - upgrade SOCFortress CoPilot (and the copilot-backend container image) to 0.1.77 or later, which is the release referenced at https://github.com/socfortress/CoPilot/tree/v0.1.77 and delivered through PR https://github.com/socfortress/CoPilot/pull/942 / commit d22f80f9086ef5e68baa3a9414bff7d7621a14a8; the advisory is https://github.com/socfortress/CoPilot/security/advisories/GHSA-c6jc-rh4j-wg88. The patch adds Security(require_any_scope('admin','analyst')) dependencies to the create, get, list, update, delete and toggle exclusion routes, replaces the non-validating return_username_for_logging dependency on the create handler with the scope-checking dependency so created_by comes from a validated caller, and the advisory additionally recommends making decode_token fail closed by raising instead of returning sentinel strings and scoping exclusions to the caller's tenant, rejecting a null customer_code from non-admin callers. Until the upgrade is deployed, restrict network reachability of the backend API - particularly the /api/incidents/alerts/create/velo-sigma/exclusion and /velo-sigma/exclusion/{exclusion_id}/toggle paths - to trusted management networks at a reverse proxy or firewall, accepting that this also blocks legitimate analyst tuning traffic through those endpoints, and audit existing exclusion rules for entries whose created_by value is the sentinel 'Invalid token' or 'Expired signature' or whose customer_code is null, reviewing or removing any that do not correspond to a legitimate SOC decision (reviewing rule definitions exposes detection-tuning posture, so perform it with privileged access). Note that suppression only takes effect for deployments that ingest Velociraptor Sigma alerts through process_sigma_alert.
Affected VersionsENISA
Affected Packages
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
SOCFortress CoPilot is a Python/FastAPI backend (published as ghcr.io/socfortress/copilot-backend) whose analyst-facing routes are normally protected by a require_any_scope('admin','analyst') dependency. The Velociraptor Sigma exclusion CRUD routes in backend/app/incidents/routes/incident_alert.py were written without that dependency, and the create handler relied on return_username_for_logging, which calls decode_token in backend/app/auth/utils.py. decode_token catches jwt.ExpiredSignatureError and jwt.InvalidTokenError and returns the ordinary strings 'Expired signature' or 'Invalid token' rather than raising, and return_username_for_logging passes that return value straight through, so a failing decode is indistinguishable from a successful lookup. Because the OAuth2PasswordBearer scheme is configured with auto_error=True, the only enforced prerequisite is the presence of an Authorization: Bearer header - its contents are never checked - and the handler proceeds to persist the rule with created_by set to the sentinel string. This is CWE-287 (improper authentication) combined with CWE-862 (missing authorization) per the GHSA; the sibling routes in the same file use Security(...require_any_scope(...)), so the omission is an inconsistency rather than intended design. Impact is realised on the ingest path: process_sigma_alert in backend/app/incidents/services/velo_sigma.py calls check_exclusions and short-circuits alert creation when a rule matches on channel, title or field regex, and a rule with a null customer_code matches across all tenants. The read/update/delete/toggle routes use get_current_user without role checks, so any authenticated account, including customer_user, can manage all exclusions. The CPE cpe:2.3:a:socfortress:copilot:*:*:*:*:*:*:*:* covers all releases prior to the fixed 0.1.77.
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Unauthenticated network-reachable create endpoint accepts any Bearer header (PR:N, AC:L); impact is integrity of detection-suppression config (I:H); confidentiality leak is auth-gated so C:N for the unauth vector.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. Prior to 0.1.77, the Velociraptor Sigma exclusion-management endpoints in backend/app/incidents/routes/incident_alert.py omit role and tenant authorization, and POST /api/incidents/alerts/create/velo-sigma/exclusion does not validate credentials. Its return_username_for_logging dependency in backend/app/auth/utils.py calls decode_token, which returns ordinary Invalid token or Expired signature strings on failure, and the dependency passes these strings through instead of rejecting the request. A Bearer header is required, but an arbitrary invalid, expired or forged value can create a suppression rule without a valid account. The collection GET at /create/velo-sigma/exclusion lists exclusions; the read, update and delete routes under /create/velo-sigma/exclusion/{exclusion_id}, and the /velo-sigma/exclusion/{exclusion_id}/toggle route, use get_current_user without role checks, permitting any authenticated customer_user to manage every exclusion. In backend/app/incidents/services/velo_sigma.py, process_sigma_alert calls check_exclusions and drops matching enabled alerts before incident creation. A null customer_code applies a rule across all tenants. Attackers can suppress detections platform-wide through channel, title or field matching, while low-privilege accounts can enumerate detection-tuning data and modify, disable or delete legitimate exclusions. This issue is fixed in version 0.1.77.
Technical POC Analysis
CWE-287 (Improper Authentication), with a secondary CWE-862 (Missing Authorization) on the management routes.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-61739 is a high-severity vulnerability in SOCFortress CoPilot versions before 0.1.77 that allows unauthenticated attackers to silently disable security detection rules across all tenants. This directly undermines the SOC's ability to detect threats, exposing the organization to undetected intrusions and potential data breaches, while also enabling low-privilege users to tamper with exclusions. Leadership must treat this as a critical gap in security monitoring and act swiftly to mitigate risk.
Apply vendor patch: 0.1.77
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Authentication bypass in SOCFortress CoPilot versions prior to 0.1.57 allows remote unauthenticated attackers to forge a
Arbitrary host file write as root in SOCFortress CoPilot prior to 0.1.77: the ScoutSuite GCP report upload endpoint acce
Stored cross-site scripting in SOCFortress CoPilot lets any authenticated portal user, including the lowest-privilege cu
Unauthenticated active-response invocation and alert injection affect SOCFortress CoPilot deployments prior to 0.1.76 th
Unauthenticated disclosure of cloud credentials and audit data in SOCFortress CoPilot stems from the `/scoutsuite-report
Stored server-side template injection in SOCFortress CoPilot before 0.1.76 allows a customer_user - the lowest-privilege
Cross-tenant object-store writes in SOCFortress CoPilot before 0.1.76 let any authenticated customer_user (customer-port
Command injection in Microsoft Copilot allows an attacker to disclose confidential information when a victim invokes Cop
EUVD-2026-114005
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB