Page MenuHomePhabricator

OpenStack / Horizon lets “reader” users promote anyone to “member”
Closed, ResolvedPublicSecurity

Description

Example: I (lucaswerkmeister) am currently only a “reader” in the bastion project; under Access > Project Access, I see a big “Grant Member Role” button next to all non-member readers, including myself.

Screen Shot 2025-06-04 at 14.26.23.png (2×3 px, 379 KB)

The button appears to be functional; I used it to promote myself to “member” in deployment-prep, in an attempt to debug T396012.

There is also a “Revoke Member Role” button; I have not tried out if it does what it says.

Screen Shot 2025-06-04 at 14.40.07.png (719×1 px, 99 KB)

Details

Risk Rating
High
Author Affiliation
Wikimedia Communities
Related Changes in Gerrit:

Event Timeline

That UI is governed by:

admin_or_owner: is_admin:True or rule:member_role

members:grant_membership: rule:admin_or_owner
members:revoke_membership: rule:admin_or_owner
members:toggle_member: rule:admin_or_owner

Which looks right to me, but the fact that both the UI and the backend agree that this is allowed means something bad is happening with the policy engine :(

taavi triaged this task as Unbreak Now! priority.Jun 4 2025, 12:51 PM
taavi subscribed.

With my non-privileged user, I only see the "Grant Member Role" button for existing users, not the usual add/remove user actions.

Looking at the code, that seems to be guarded behind the members:toggle_projectadmin rule, while the policy definition has members:toggle_member.. is oslo.policy really falling open when a rule is not defined anywhere?

@LucasWerkmeister, thank you for the clear and discreet report. I believe that this is now resolved, can you please confirm on your end?

taavi assigned this task to Andrew.
sbassett moved this task from Incoming to Our Part Is Done on the Security-Team board.
sbassett changed the visibility from "Custom Policy" to "Public (No Login Required)".
sbassett changed the edit policy from "Custom Policy" to "All Users".
sbassett changed Risk Rating from N/A to High.