← Back to search

CVE-2026-61707

9 CRITICALpublic exploit available

Published 2026-10-29 · Updated 2026-10-29

AI risk analysis

Summary
Unsanitized Jinja2 template rendering in SOCFortress CoPilot allows authenticated customer_users to upload malicious templates that execute arbitrary Python code as root when admins or analysts generate reports, leading to full tenant data compromise and credential theft.
Exploitability
Low-privilege authenticated users (customer_user) can exploit this with minimal effort by uploading a crafted template file and triggering report generation via existing endpoints.
Blast radius
Full compromise of all tenants' incident data, SIEM logs, and stored connector credentials; potential lateral movement via internal service access through the HTML/PDF renderer.
Detection
Monitor for non-admin users uploading files with .jinja, .j2, or unexpected MIME types via /case-report-template/upload; watch for report generation requests triggered by low-privilege users in backend logs. No reliable host or network indicator is derivable from the published description.
Prioritized remediation
Upgrade to SOCFortress CoPilot version 0.1.76 or later, which patches the unsandboxed Jinja2 rendering and adds proper template scoping.
rcetemplate-injectionprivilege-escalationwebappmulti-tenant

Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.

NVD description

SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. Prior to 0.1.76, in the reported deployment, case-report templates uploaded by `customer_user`, the lowest-privilege portal role, are later executed by non-sandboxed Jinja2 engines when an admin or analyst generates a report. The `/case-report-template/upload` route in `backend/app/incidents/routes/db_operations.py` validates only the filename-derived MIME type, not the template content. Templates share a global store without customer_code scoping, and `customer_user` can also list, download and delete them, allowing an attacker to replace a legitimate default template under the same name. In `backend/app/incidents/services/reports.py`, `render_document_with_context` uses `DocxTemplate` without a sandbox; in `backend/app/incidents/services/reports_pdf.py`, `render_html_template` uses a non-sandboxed `Environment` without autoescaping. Normal privileged requests to `POST /api/incidents/report/generate-report-docx` or `/generate-report-pdf` therefore evaluate attacker-controlled Jinja expressions as Python on the backend. The reported deployment executes commands as root, exposing all tenants' incident and SIEM data and stored connector credentials. The HTML/PDF wkhtmltopdf renderer additionally permits local-file reads and requests to internal services. This issue is fixed in version 0.1.76.

CVSS vector

CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H

Weaknesses

CWE-94, CWE-862, CWE-1336

Public exploit & PoC references

All references

Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.

Related CVEs

Related by shared AI tags and CWE weakness class. Browse the full archive.