cve-2026-30269---improper-access-control-in-doorman-allows-privilege-escalation
Date: May 7, 2026
CVE ID: CVE-2026-30269
Vulnerability Type: Improper Access Control (CWE-284) / Broken Function Level Authorization
Reporter: orxiain
Executive Summary
A vulnerability was identified in Doorman (v0.1.0 and v1.0.2) where the backend fails to properly validate permissions during a user profile update. An authenticated user can exploit this flaw to modify their own account's role field, effectively escalating their privileges to any non-admin high-privileged role within the system.
Vulnerability Details
The vulnerability exists within the user update logic. When a user submits a PUT request to update their profile information via the /platform/user/{username} endpoint, the application processes the request using the update_user function.
While the system intends to restrict role modifications to administrators, it fails to perform a manage_users permission check when a user is updating their own account. Because the role field is accepted by the underlying update_user_model.py, a low-privileged user can include the role parameter in their request body to grant themselves elevated permissions.
Technical Analysis
Affected Component:
backend-services/routes/user_routes.py(Function:update_user)Root Cause: The
roleattribute inbackend-services/models/update_user_model.pyis mutable without specific authorization checks during self-service updates.Attack Vector: Remote / API-based.
Affected Versions
Doorman v0.1.0
Doorman v1.0.2
Fixed Version: TBD (Users are advised to monitor the official repository for patches).
Proof of Concept (PoC)
An authenticated user with the username attacker_user and the role Guest can escalate their role by sending the following HTTP request:
Request:
HTTP
PUT /platform/user/attacker_user HTTP/1.1
Host: <doorman-instance-url>
Authorization: Bearer <valid_jwt_token>
Content-Type: application/json
{
"email": "[email protected]",
"role": "Manager"
}
(Note: In this example, "Manager" represents a high-privileged non-admin role. The system accepts this update without verifying if the user has the authority to change roles.)
Impact
Successful exploitation of this vulnerability allows any authenticated user to bypass the intended RBAC (Role-Based Access Control) model. This could lead to:
Unauthorized access to sensitive data and platform configurations.
Unauthorized modification of resources managed by higher-privileged roles.
Complete compromise of the platform's logical security boundaries (short of full Admin access).
Remediation & Mitigation
Code Fix: Implement a strict check in
update_userto ensure that therolefield can only be modified if the requesting user possesses themanage_userspermission, even if the user is updating their own profile.Input Validation: Use Data Transfer Objects (DTOs) or schemas for self-updates that exclude the
rolefield entirely, preventing "Mass Assignment" vulnerabilities.Temporary Workaround: Implement a Web Application Firewall (WAF) rule to strip the
rolefield from incomingPUTrequests to the user endpoint unless the requester is an administrator.
Credits
This vulnerability was discovered and reported by orxiain.