Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to DefectDojo API with delegated change_user account
-
DeliveryPATCH /api/v2/users/{id}/ with is_staff:true
-
ExploitUserSerializer saves flag without superuser check
-
ExecutionAccess Django /admin/ interface as is_staff user
-
PersistSet is_superuser on own account via UserAdmin form
-
ImpactFull DefectDojo data and user control achieved
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
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 | Exploitation requires an authenticated session in DefectDojo 2.59.0 with at least the auth.change_user and auth.add_user Django permissions - these are typically granted to delegated user-manager roles, not arbitrary end-users. The /admin/ interface must also be reachable (DD_DJANGO_ADMIN_ENABLED=True, which was the prior default). Limiting factors include: the attacker must already hold a DefectDojo account with delegated user-management permissions; the affected version (2.59.0) is a narrow, accidental release that has been pulled; and the secondary escalation path through Django admin requires the admin interface to be enabled and accessible. The attack is not exploitable by unauthenticated actors or by standard read-only DefectDojo users without change_user permission. |
| Impact | The CVSS 4.0 score of 5.3 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L) reflects low impact ratings on vulnerable-system metrics, which appears conservative given the actual escalation potential: gaining is_staff gives Django admin access and, through a second step, a path to is_superuser. The E:P environmental modifier confirms public exploit code exists, elevating practical risk above the base score implies. There is no CISA KEV listing, so active mass exploitation has not been confirmed. The exposure window is narrow: 2.59.0 was an accidental release that has been removed from distribution, meaning only installations that proactively fetched that specific tag are affected. EPSS data was not provided; given the narrow affected version footprint and the authentication prerequisite (PR:L), opportunistic mass scanning is unlikely. The most credible threat actor is an insider or a compromised low-privilege service account within a DefectDojo instance, not an external unauthenticated attacker. Risk priority is moderate-high for any organisation running 2.59.0 but low for the broader DefectDojo user base. |
| Exploit ScenarioDerived | An attacker with a valid DefectDojo account that holds delegated change_user and add_user permissions sends a PATCH request to /api/v2/users/{own_id}/ with the body {"is_staff": true}. Because UserSerializer applies no superuser check on that field, the flag is saved; the attacker then accesses the Django /admin/ interface, uses the UserAdmin change form to set is_superuser on their account, and from that point has unrestricted access to all vulnerability records, findings, and user data within DefectDojo. Public exploit code exists per the E:P CVSS 4.0 modifier. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Privilege escalation in OWASP DefectDojo 2.59.0 exposes authenticated non-superusers to flip the is_staff flag on any account - including their own - through the UserSerializer in the v2 API, bypassing DefectDojo's role-based access controls and granting Django admin access. Version 2.59.0 was an accidental release and has been pulled; patched releases 2.58.3 and 3.0.0 exist. Publicly available exploit code is acknowledged (CVSS 4.0 E:P), and no special preconditions beyond a valid authenticated session with delegated user-management permissions are required.
RemediationAI
Upgrade immediately to DefectDojo 2.58.3 (for the 2.x line) or 3.0.0 (for the 3.x line); both are confirmed patched releases per the vendor advisory at https://github.com/DefectDojo/django-DefectDojo/releases/tag/3.0.0 and the patch commit 68a272f299d096249fd3ba9c2676bf69012857bf. If an immediate upgrade is not feasible, disable the Django admin interface by setting DD_DJANGO_ADMIN_ENABLED=False (which is now the default in patched releases) - this removes the secondary escalation path from is_staff to is_superuser, though it does not prevent the API-level is_staff mutation itself. Additionally, audit all user accounts in the DefectDojo instance for unexpected is_staff or is_superuser flags and revoke them. Restrict the user-update API permissions to the smallest possible set of accounts. No side effects of upgrading have been documented by the vendor.
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
DefectDojo is a Django-based vulnerability management platform. The flaw resides in the validate() method of UserSerializer in dojo/api_v2/serializers.py. Prior to the fix, the serializer applied no guard on the is_staff field: any caller with sufficient API permission to update a user record could pass is_staff=true without the application verifying that the requestor was a superuser. CWE-269 (Improper Privilege Management) accurately characterises the root cause - is_staff in Django's auth model is a near-superuser flag: it grants access to the /admin/ site and, under Django's default UserAdmin, allows a holder with the change_user permission to tick is_superuser on themselves, completing a full privilege escalation chain. The patch (commit 68a272f, PR #14952) introduces an explicit check in validate() that rejects any is_staff mutation by non-superusers, restricts the admin site gate to require is_superuser (not merely is_staff), and defaults DD_DJANGO_ADMIN_ENABLED to False. The affected CPE is cpe:2.3:a:owasp:defectdojo:*:*:*:*:*:*:*:* scoped to version 2.59.0.
Know when Defectdojo 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:L/SC:N/SI:N/SA:N/E:P
Network API access with low-privilege auth required; scope changes because is_staff enables Django admin, yielding high confidentiality and integrity impact over DefectDojo's full dataset.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
2DescriptionCVE.org
A vulnerability was identified in OWASP DefectDojo 2.59.0. This issue affects the function UserSerializer of the file dojo/api_v2/serializers.py of the component API/Web. Such manipulation of the argument is_staff leads to improper privilege management. The attack may be performed from remote. The exploit is publicly available and might be used. Upgrading to version 2.58.3 and 3.0.0 is capable of addressing this issue. The name of the patch is 68a272f299d096249fd3ba9c2676bf69012857bf. It is advisable to upgrade the affected component. 2.59.0 was not intended to be released and has been removed.
Articles & Coverage 1
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
EUVD-2026-48439
GHSA-43fx-4mqw-qphw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB