MantisBT Vulnerable to Privilege Escalation from Manager to Administrator
Description
Insufficient access control checks in _ProjectUsersAddCommand_ (used in *manage_proj_user_add.php* and REST API endpoint PUT /project/{id}/users) allows users having *manage_project_threshold* access level (*manager* by default) to grant project-level *administrator* access to any user (including themselves) in any Project they have *manager* rights in.
The normal project-user add form does restrict the selectable access levels to the actor's own project role or below. However, the backend handler still accepts a forged higher access_level value and writes it.
Impact
Privilege escalation.
The consequences of the privilege escalation are not as bad as it may sound, because having *administrator* access at Project level is effectively not very different from being *manager*, it does not actually give administrator privileges on the whole MantisBT instance. In particular, it does not let the upgraded user delete the Project or grant them any access to global administrative functions such as managing Users, Projects, Plugins, Custom Fields, etc.
### Patches - 69e0180f180ed5acf48a8d281a73683a7bf32461
Workarounds
None
Credits
Thanks to the following security researchers for independently discovering and responsibly reporting the issue: - Dracosec Research Limited (Siu Nam Tang, Chris Chan, Krecendo Hui, William Lam) - Vishal Shukla
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
In MantisBT, a manager can escalate any project user to administrator via forged access_level because backend validation lacks access-level bounds checking
Vulnerability
Overview
CVE-2026-34390 is an insufficient access control vulnerability in MantisBT's ProjectUsersAddCommand handler, which backs both the web form (manage_proj_user_add.php) and the REST API (PUT /project/{id}/users). While the front-end limits selectable roles to the actor's own access level or below, the backend accepts a forged, higher access_level value without re-validating that it does not exceed the actor's current project role [1][4]. This lack of server-side bounds checking allows a user with manage_project_threshold` (default: manager) to grant themselves or any other user project-level administrator access in any project where they already hold manager rights.
Attack
Vector and Prerequisites
The attacker must have manager-level access to at least one project. No special network position is required; the vulnerability can be exploited by submitting a crafted HTTP request (either a POST to manage_proj_user_add.php or a PUT call to the corresponding REST endpoint) containing an access_level parameter higher than the manager's own permitted role [1][3]. The existing code in ProjectUsersAddCommand::validate() only checks that the actor meets the manage_project_threshold and project_user_threshold levels, but never compares the requested role against the actor's own access_level of the actor [3].
Impact
Successful exploitation results in privilege escalation within a project: the targeted user gains project-level administrator rights. However, this does not grant instance-wide administrative capabilities—project administrators cannot delete the project, manage global users, or access system-level settings [4]. The practical difference between manager and project administrator in MantisBT is minimal, but the escalation still represents a violation of the intended role-based access control policy and can be leveraged for lateral movement within the project.
Mitigation
The vendor has patched the issue in commit 69e0180f180ed5acf48a8d281a73683a7bf32461 [1][4]. No workaround is available; users must update to the patched version. The GitHub Security Advisory (GHSA-frf7-jhp9-jxm6) confirms the fix and credits independent researchers for coordinated disclosure [4].
AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
mantisbt/mantisbtPackagist | < 2.28.2 | 2.28.2 |
Affected products
2Patches
169e0180f180eFix privilege escalation in ProjectUsersAddCommand
1 file changed · +4 −0
core/commands/ProjectUsersAddCommand.php+4 −0 modified@@ -102,6 +102,10 @@ function validate() { project_ensure_exists( $this->project_id ); $t_actor_id = auth_get_current_user_id(); + # Do not allow adding a user with an access level higher than the actor's + if( $this->access_level > access_get_project_level( $this->project_id, $t_actor_id ) ) { + throw new ClientException( "Access level cannot be higher than your own", ERROR_ACCESS_DENIED ); + } # We should check both since we are in the project section and an # admin might raise the first threshold and not realize they need
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
5News mentions
0No linked articles in our index yet.