Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain any active Ghostwriter user account
-
DeliveryIdentify or enumerate report template primary keys
-
ExploitSubmit lint request with target template ID to lint trigger endpoint
-
ExecutionReceive lint findings disclosing template variable names and engine errors
-
ImpactOptionally overwrite stored lint result for target template
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Authentication is required - the attacker must hold any active Ghostwriter user account (CVSS PR:L confirms low-privilege authentication is sufficient; unauthenticated access is not possible). No elevated role, administrative privileges, or non-default configuration is needed beyond account activation via request.user.is_active. Exploitation targets the report template lint trigger endpoint and the stored lint result retrieval endpoint, both of which accept a caller-supplied template primary key integer with no ownership validation. The attack is bounded to template metadata disclosure (variable names, template-engine errors) and stored lint result overwriting - it does not provide access to full report content, authentication credentials, or report data beyond the lint output. Exploitation is further limited to deployments where untrusted or low-privilege users hold active accounts alongside sensitive templates belonging to other clients. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N) confirms low-complexity network exploitation requiring only a valid authenticated session - no elevated role or special configuration needed. Both confidentiality and integrity impacts are low, scoped to template structure metadata disclosure and lint result overwrites rather than full report content or account takeover. No CISA KEV listing is present, and no confirmed active exploitation has been identified at time of analysis. However, a public researcher writeup at geo-chen/oss exists and is cited in the VulnCheck advisory, materially lowering the exploitation barrier for any account holder who finds the disclosure. Risk is most significant in multi-tenant Ghostwriter deployments where client-scope isolation is a security expectation - any team managing sensitive red team engagements for multiple clients should treat cross-tenant template enumeration as a meaningful confidentiality breach. EPSS score data was not provided in the available intelligence. |
| Exploit ScenarioDerived | An authenticated Ghostwriter user with any active low-privileged account iterates through sequential or guessed report template primary keys by calling the lint trigger endpoint with each ID. The endpoint resolves the template object and executes linting with no ownership check, returning findings that enumerate variable names and template-engine errors belonging to templates across all clients and users. A public researcher writeup documenting this behavior exists, providing a practical reference for exploitation. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 24, 2026
Missing per-object authorization on Ghostwriter's report template lint endpoints through version 7.2.6 exposes cross-tenant template metadata to any authenticated user. The RoleBasedAccessControlMixin.test_func method defaults to checking only request.user.is_active, and neither the lint-trigger endpoint nor the lint-result retrieval endpoint overrides this with ownership or client-scope validation. Any holder of a valid active account can lint an arbitrary template by supplying its primary key, overwriting that template's stored lint result and reading returned findings that enumerate variable names and template-engine errors - disclosing template structure across organizational boundaries. No public exploit confirmed at time of analysis, though a public researcher writeup exists.
RemediationAI
No vendor-released patch version is identified at time of analysis - the CVE description explicitly states the lint endpoints remain unfixed. Operators should monitor the GhostManager Ghostwriter repository at https://github.com/GhostManager/Ghostwriter for any post-7.2.6 release that introduces per-object authorization overrides on the lint endpoints. As a compensating control, restrict Ghostwriter access to the minimum set of vetted, trusted accounts and avoid issuing active accounts to users who should not have cross-client template visibility, since any active account is sufficient to exploit these endpoints. Where network-level controls are feasible, restrict access to the Ghostwriter API to internal networks or specific IP allowlists to reduce external exposure. Implement API access logging and alert on lint requests targeting template primary keys outside a user's expected client scope as a detection measure. Consult the VulnCheck advisory and researcher disclosure at https://github.com/geo-chen/oss/blob/main/Ghostwriter.md for additional technical detail as remediation evolves.
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
Ghostwriter is a Django-based red team engagement and reporting platform developed by GhostManager. The authorization logic in ghostwriter/api/utils.py (lines 470-480, v7.2.6) uses a mixin pattern - RoleBasedAccessControlMixin - where test_func serves as the gatekeeper. The mixin's default implementation checks only that the requesting user is active, with the expectation that individual views override it to enforce per-object ownership or client-scope rules. CWE-862 (Missing Authorization) captures the root cause precisely: the lint trigger endpoint and the lint result endpoint both resolve a ReportTemplate object from a caller-supplied primary key without any override, meaning the RBAC framework's per-object layer is simply never invoked. The described template-swap path is a distinct endpoint that partially authorizes the report object but omits the per-template check - a separate incomplete fix that the CVE distinguishes from these fully unguarded endpoints.
Know when Ghostwriter 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network vector with low-privilege authentication required (PR:L); template metadata limited to C:L and I:L; no availability impact; scope unchanged as no component boundary is crossed.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Ghostwriter through 7.2.6 does not apply per-object authorization on its report template lint endpoints. RoleBasedAccessControlMixin.test_func returns only request.user.is_active unless a view overrides it, and neither the endpoint that lints a report template nor the endpoint that returns stored lint results provides an override, so each resolves a ReportTemplate from a caller-supplied primary key with no ownership or client-scope check. Any authenticated account can therefore lint an arbitrary template, which overwrites that template's stored lint result, and can read the returned findings, which enumerate the template's variable names and template-engine errors and so disclose its structure. This is distinct from the template swap path: that endpoint authorizes the report but omits the per-template check, whereas these endpoints omit authorization entirely and remain unfixed.
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.
EUVD-2026-64679
GHSA-62c9-3hw5-37qf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB