Relationship Graph
View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0037199 | mantisbt | security | public | 2026-05-27 22:06 | 2026-05-31 19:47 |
| Reporter | byteoverride | Assigned To | dregad | ||
| Priority | high | Severity | major | Reproducibility | always |
| Status | resolved | Resolution | no change required | ||
| Product Version | 2.29.0 | ||||
| Summary | 0037199: Missing Authorization Check on Reporter Field in mc_issue_update Allows UPDATER-Level User to Forge Issue Ownership | ||||
| Description | Any authenticated user with UPDATER access (level 40) or above can change the Vulnerability DetailsType: Insecure Direct Object Reference / Broken Access Control (CWE-639) Affected File: Issue creation (PROTECTED) at line 1409-1415:
Issue update (UNPROTECTED) at line 1007 and 1053:
The REST API PATCH endpoint at | ||||
| Steps To Reproduce | Environment: MantisBT 2.29.0-dev, PHP 8.3, MariaDB 11.8 Accounts used:
Step 1: Verify issue ownership before attack
Step 2: UPDATER changes reporter via SOAP API
Expected behavior: SOAP fault "Active user does not have access level required to specify a different reporter" (matching the check in mc_issue_add). Actual behavior: Returns Step 3: Verify ownership changed
The reporter changed from administrator (id=1) to updateruser (id=3). The UPDATER user has access_level 40, which is below the Alternative: Same attack via REST API | ||||
| Additional Information | ImpactAn attacker with UPDATER access (level 40, a common non-admin role) can:
The issue creation path explicitly checks the threshold, proving the developers intended this restriction. The omission on the update path is a bug. Recommended FixAdd the same
Affected VersionsMantisBT 2.29.0-dev (current develop branch). The reporter field has been accepted without authorization checks in | ||||
| Tags | No tags attached. | ||||
| related to | 0037075 | confirmed | SOAP Issue Update Implicitly Reassigns Reporter To The Caller When reporter Is Omitted |
|
Thanks for the report, I'll look into it. |
|
|
This actually works as designed. I believe you are misunderstanding the purpose of the webservice_specify_reporter_on_add_access_level_threshold config, which only controls whether the user is allowed set a different reporter than themselves when creating a new issue. An UPDATER user is definitely allowed to change the reporter afterwards (you can confirm that from the UI). The difference is that this will leave a trace of the action in the Issue's history. This is clearly documented in the config's PHPDoc. I realize that this is not reflected in the Admin Guide, so I'll update that. I'll close this as no change required. |
|
|
MantisBT: master a7e38077 2026-05-31 19:37 Details Diff |
Align Admin Guide with config_defaults_inc.php The webservice_specify_reporter_on_add_access_level_threshold config was missing the 2nd paragraph from the PHODoc block. Reworded text and updated both locations. Issue 0037199 |
Affected Issues 0037199 |
|
| mod - config_defaults_inc.php | Diff File | ||
| mod - docbook/Admin_Guide/en-US/config/api.xml | Diff File | ||
related to
child of
duplicate of