Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege customer_user
-
DeliveryPOST crafted upload to /api/agent_data_store/upload with chosen bucket_name and object_name
-
ExploitOverwrite cross-tenant sysmon config or report template
-
ExecutionPoisoned template rendered server-side
-
ImpactAchieve code execution and endpoint telemetry blinding
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated customer_user (customer-portal) account - the lowest-privilege role - on a CoPilot instance prior to 0.1.76; no admin or analyst rights are needed. The vulnerable route POST /api/agent_data_store/upload is exposed to this role by default (no special non-default configuration is required), and the only server-side check is that the uploaded filename is non-empty, with no bucket allow-list, no per-tenant prefix enforcement, no ownership check, and no content-type/extension validation. The limiting factor is that the attacker must hold valid portal credentials for at least one tenant and must know or guess target bucket/object keys (e.g. sysmon-configs/<customer_code>/sysmon_config.xml, copilot-case-report-templates/<name>, copilot-cases/<case_id>/<file>, velociraptor-artifacts/<agent_id>/<flow_id>/<file>); the sibling list, download, and delete routes remain admin/analyst-only, so only the upload write path is reachable. |
| Impact | This is a genuine near-term priority rather than a CVSS-inflated issue, but its reach is gated by authentication. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L, base 8.5) describes a network-reachable, low-complexity write that requires a low-privilege authenticated account (PR:L - the customer_user portal role) and no user interaction, with a changed scope reflecting cross-tenant and downstream-endpoint impact and integrity as the dominant effect (I:H, A:L, C:N). The vuln.today decision label is 'this_week', consistent with a serious-but-not-emergency posture. No EPSS score and no SSVC decision values were supplied in the input, and the issue is NOT present in CISA KEV, so there is no evidence of active exploitation. However, a working proof-of-concept is published in the GHSA advisory and was confirmed live by the reporter against the official ghcr.io/socfortress/copilot-backend image, so exploitability is proven even though in-the-wild use is not. The main factor tempering raw severity is that an attacker must already hold valid customer-portal (customer_user) credentials for at least one tenant; this is the lowest-privilege role, but it is still authenticated access, so the flaw is a privileged-insider / compromised-tenant-credential risk, not a remote-unauthenticated one. Note the CVSS vector reports C:N despite the cross-tenant nature - this is consistent with the advisory, because only the write/upload path is exposed while list/download/delete remain admin/analyst-only, so the impact is integrity and availability, not disclosure. |
| Exploit ScenarioDerived | An attacker holding customer_user portal credentials for a single tenant sends a crafted POST to /api/agent_data_store/upload specifying an arbitrary bucket_name and object_name, and overwrites another tenant's sysmon-configs/<customer_code>/sysmon_config.xml to blind endpoint telemetry, or plants a malicious DOCX/HTML file in copilot-case-report-templates that is later rendered server-side as a path to code execution. A working proof-of-concept demonstrating exactly these cross-tenant writes is published in the vendor's GHSA advisory and was confirmed live by the reporter. Because the vector is network, low-complexity, and needs only the lowest-privilege authenticated role, exploitation is straightforward once valid portal credentials are obtained. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Cross-tenant object-store writes in SOCFortress CoPilot before 0.1.76 let any authenticated customer_user (customer-portal) account overwrite arbitrary objects in any bucket - including other tenants' case evidence and forensic artifacts, the Sysmon configuration distributed to managed Windows endpoints, and the report templates rendered server-side - because the upload route accepts caller-controlled bucket and object names with no allow-list, no tenant prefix, no ownership check and no content validation. The write is an unconditional upsert that creates missing buckets on demand, so the lowest-privilege role can blind endpoint telemetry, tamper with cross-tenant evidence, poison report templates for later server-side rendering, plant data or exhaust storage. The reporter published a confirmed live proof-of-concept with reproduction steps against the published ghcr.io/socfortress/copilot-backend:latest image; no CISA KEV entry or other active-exploitation reporting is present, and 0.1.76 fixes the issue by restricting the upload route to admin/analyst scopes.
RemediationAI
Upgrade to CoPilot 0.1.76, the vendor-released fix, which removes the customer_user scope from POST /api/agent_data_store/upload so the route requires admin or analyst rights; the change is captured in PR 937 (https://github.com/socfortress/CoPilot/pull/937) and commit 2d090bc07a109eefbdf9ed22dc67b0c93922d9ca, with details in advisory GHSA-6j26-wcv6-gp3f (https://github.com/socfortress/CoPilot/security/advisories/GHSA-6j26-wcv6-gp3f). The vendor notes that the customer portal uploads case files through /incidents/db_operations/case/data-store/upload rather than this route, so removing customer_user does not break portal uploads - verify that before rolling the change into any customized deployment. Where an immediate upgrade is not possible, applying the same scope restriction (admin/analyst only) to the upload route is the corrective change the upstream fix makes; the trade-off is that any non-portal integration relying on customer_user writes to that endpoint will start receiving authorization errors and must be repointed to the portal route. Beyond the scope fix, the advisory's recommended hardening is to constrain bucket_name to a fixed server-side allow-list, force object_name to the caller's resolved customer_code prefix, reject non-administrative writes to the sysmon-configs and copilot-case-report-templates buckets, validate content type and extension against the destination bucket's expected format, and stop creating buckets on demand from user-supplied names. Because the write is an overwrite, also review object-store contents for tampered sysmon_config.xml files and report templates and reverify case evidence and Velociraptor artifact integrity in any instance that was reachable by a customer_user account before patching.
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
CoPilot is a FastAPI backend that fronts a MinIO/S3-compatible object store through the MinIO Python client. The vulnerable handler at backend/app/data_store/data_store_routes.py:32 is guarded only by a scope dependency admitting admin, analyst and customer_user, then passes the request's bucket_name and object_name form fields straight into upload_file_to_datastore in backend/app/data_store/data_store_operations.py. That routine calls create_bucket_if_not_exists with the user-supplied name and then fput_object as an upsert, so an existing key belonging to another tenant is silently replaced; the sole validation is that file.filename is non-empty, with no extension or content-type restriction. The root cause class is CWE-284 improper access control, with the advisory also classifying it as CWE-639 (authorization bypass through user-controlled key) and CWE-862 (missing authorization) because object keys are taken from the request instead of being derived from the caller's resolved customer_code. The sibling list, download and delete routes in the same router are admin/analyst-only and build keys from database rows, so only this write path is broadly exposed. Because the overwritten keys are consumed downstream - sysmon-configs/<customer_code>/sysmon_config.xml is pushed to managed Windows endpoints, copilot-case-report-templates/<name> is rendered server-side, and copilot-cases/<case_id>/<file> plus velociraptor-artifacts/<agent_id>/<flow_id>/<file> hold evidence and collected artifacts - the integrity impact propagates beyond the object store itself; the template-poisoning consequence is described by the reporter as a staging path toward code execution via later server-side rendering, though the published PoC demonstrates only the unauthorized writes, not code execution. Exploitation requires an authenticated customer-portal account (CVSS PR:L) and knowledge or guessing of target bucket and object keys; no administrative rights or non-default configuration are needed. The upstream fix in PR 937 narrows the route dependency to admin/analyst, noting that the customer portal uploads case files through /incidents/db_operations/case/data-store/upload instead.
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:L/UI:N/S:C/C:N/I:H/A:L
Network API reachable by the authenticated lowest-privilege customer_user (PR:L, AC:L); writes affect other tenants and managed endpoints so S:C; only the write path is exposed so C:N, with I:H and A:L from arbitrary overwrite and storage exhaustion.
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.76, POST /api/agent_data_store/upload in backend/app/data_store/data_store_routes.py permits customer_user callers to choose bucket_name and object_name without an allowlist, tenant prefix, ownership check or content restriction. The only file check requires a nonempty filename. The operations in backend/app/data_store/data_store_operations.py create missing buckets and upsert objects, allowing existing objects belonging to any tenant to be overwritten. Targets include sysmon-configs/<customer_code>/sysmon_config.xml distributed to managed Windows endpoints, copilot-case-report-templates/<name> rendered server-side, and case evidence or forensic artifacts under copilot-cases/<case_id>/<file> and velociraptor-artifacts/<agent_id>/<flow_id>/<file>. A lowest-privilege user can tamper with cross-tenant evidence, blind endpoint telemetry, poison report templates for later code execution, plant data or exhaust storage. Sibling list, download and delete routes remain restricted to admin/analyst; the exposed operation is the upload write path. This issue is fixed in version 0.1.76.
Technical POC Analysis
CWE-284 (Improper Access Control); the advisory also tags CWE-639 (Authorization Bypass Through User-Controlled Key) and CWE-862 (Missing Authorization).
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-61708 in SOCFortress CoPilot prior to 0.1.76 allows any low-privilege customer portal user to write to arbitrary cross-tenant object storage, putting other customers' forensic evidence, the Sysmon configuration pushed to managed Windows endpoints, and server-side report templates at risk of tampering. The most serious organizational consequences are loss of telemetry visibility across the managed Windows estate and potential cross-tenant data integrity breaches that carry contractual and regulatory exposure for a multi-tenant security platform. Leadership should treat this as a tenant-isolation failure affecting both confidentiality and integrity across the entire customer base.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict or disable customer_user upload functionality, enforce object-store policies that deny cross-tenant bucket writes and bucket creation, validate bucket and object names against a per-tenant allow-list with ownership checks, monitor object-store logs for anomalous writes, and verify integrity of Sysmon configurations and report templates.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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
Unauthenticated attackers can install detection-suppression rules in SOCFortress CoPilot deployments before 0.1.77 becau
Command injection in Microsoft Copilot allows an attacker to disclose confidential information when a victim invokes Cop
EUVD-2026-114084
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB