GHSA-v859-c572-qh5p
ZITADEL: Improper Role Revocation on Granted Projects during Multiple Role Deletions
Quick fix
GHSA-v859-c572-qh5p — github.com/zitadel/zitadel: upgrade to the fixed version with the command below.
go get github.com/zitadel/zitadel@v4.16.0Details
### Summary
A bug in how ZITADEL updates permissions when multiple project roles are deleted at the same time can cause some user permissions to be missed. This issue specifically affects **User Grants on Granted Projects** (projects shared between different organizations), **potentially** allowing users to keep access rights that were supposed to be completely removed.
### Impact
When an organization shares a project with another organization (a Project Grant), administrators can assign specific roles to users via a User Grant. If multiple roles are deleted from that project at the same time, a background process runs to strip those roles from the assigned users.
Because of an error in how ZITADEL loops through a user's list of roles during this specific cross-organization cleanup, deleting two or more roles at once **might** cause the system to accidentally skip over some of them.
> **Scope Note:** This vulnerability only affects **User Grants on Granted Projects**. Direct project roles and global organization roles are not impacted.
The risk depends entirely on what the skipped role allowed the user to do—if it was an administrative or high-privilege role, the user **could potentially** retain those elevated permissions within that granted project even after the role was officially deleted.
### Affected Versions
* **4.x:** `4.0.0` through `4.15.3` (including RC versions) * **3.x:** `3.0.0` through `3.4.12` (including RC versions)
Note: The 3.x release channel has reached End-of-Life (EOL) for security updates and will not receive a backported patch.
### Patches & Resolution
This issue has been fully resolved in the latest releases.
The update fixes the role-removal logic to ensure no roles are skipped. Furthermore, **this patch includes an automatic database migration**. When you update, the system will automatically scan your database, find any user permissions on granted projects that **may** have been accidentally left behind by this bug, and correct them.
- **4.x**: Upgrade to $\ge$[4.16.0](https://github.com/zitadel/zitadel/releases/tag/v4.16.0) - **3.x**: Update to $\ge$[4.16.0](https://github.com/zitadel/zitadel/releases/tag/v4.16.0) (or check out workarounds)
### Workarounds
There are no configuration workarounds. Upgrading to a patched version is the recommended solution and only way to trigger the automatic cleanup migration. If you cannot upgrade immediately, we recommend manually reviewing user permissions specifically for your **Granted Projects** where multiple roles were recently deleted.
### Questions
If you have any questions or comments about this advisory, please reach out to us at security@zitadel.com.
### Credits
Thanks to [AyushParkara](https://github.com/AyushParkara) for reporting this vulnerability.
Are you affected?
Enter the version of the package you're using.
Affected packages
0Fixed in: 4.16.0go get github.com/zitadel/zitadel@v4.16.0