-
Sub-task
-
Resolution: Done
-
Major
-
None
When writing a small test case for WFLY-2190, I stumbled upon a problem: trying to remove an existing server group by a server-group-scoped user that does NOT have permissions to that server group leaks information. On a freshly built WildFly with added admin user into domain/configuration/mgmt-users.properties, it can be reproduced like this:
[1] ./bin/domain.sh
[2] ./bin/jboss-cli.sh -c
/core-service=management/access=authorization/server-group-scoped-role=NewRole:add(base-role=administrator, server-groups=[main-server-group])
/core-service=management/access=authorization/role-mapping=NewRole:add
/core-service=management/access=authorization/role-mapping=NewRole/include=user-admin:add(name=admin, type=user)
/core-service=management/access=authorization:write-attribute(name=provider, value=rbac)
exit
[1] ^C
./bin/domain.sh
[2] ./bin/jboss-cli.sh -c --user=admin --password=XXX
/server-group=other-server-group:read-resource
/server-group=other-server-group:remove
What does that mean? The NewRole is scoped to the main-server-group server group and can't see other-server-group. When doing /server-group=other-server-group:read-resource, this is correctly enforced and the output looks like this:
{
"outcome" => "failed",
"failure-description" => "JBAS014807: Management resource '[(\"server-group\" => \"other-server-group\")]' not found",
"rolled-back" => true
}
However, trying to do /server-group=other-server-group:remove, which is only a different operation on the same resource, I get a different error message:
{
"outcome" => "failed",
"failure-description" => {"domain-failure-description" => "JBAS013456: Unauthorized to execute operation 'remove' for resource '[(\"server-group\" => \"other-server-group\")]' -- \"JBAS013475: Permission denied\""},
"rolled-back" => true
}
I expect the error message to be completely the same as in previous case, not leaking any information that the other-server-group actually exists.