Bug 1023100 - End users can call non-published management API operations
Summary: End users can call non-published management API operations
Keywords:
Status: CLOSED EOL
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: Domain Management, JMX
Version: 6.2.0
Hardware: Unspecified
OS: Unspecified
unspecified
low
Target Milestone: ---
: EAP 6.4.0
Assignee: Brian Stansberry
QA Contact: Ladislav Thon
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-10-24 15:33 UTC by Ladislav Thon
Modified: 2019-08-19 12:48 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-08-19 12:48:07 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker WFLY-2379 0 Major Open End users can call non-published management API operations 2016-11-28 04:30:55 UTC

Description Ladislav Thon 2013-10-24 15:33:59 UTC
Description of problem:

It's not possible to call "non-published" operations (those that are not visible in the resource tree, e.g. "describe") via JMX, while it's entirely possible to call them via CLI (e.g. "/subsystem=security:describe") and other management interfaces.

The problem lies in the fact that "ModelControllerMBeanHelper.invoke" method checks "if (!accessControl.isExecutableOperation(operationName))" and the "isExecutableOperation" method assumes that the operation will be visible in the resource tree. In fact, there is a comment stating "should not happen", but now we know that it indeed _can_ happen.

What's more, it gives a misleading error message. The "isExecutableOperation" returns "false" for unknown operations, which results in "Not authorized to invoke operation" message. Which is wrong in two different ways simultaneously: 1. the problem isn't authorization, but the fact that the operation can't be found; 2. the user (e.g. in the SuperUser role) is authorized.

I'm considering this low priority, because 1. JMX is likely to be very rarely used to access the management interface, 2. hiding information isn't nearly as important as leaking them, 3. non-published operations aren't nearly as important as the published ones.

Version-Release number of selected component (if applicable):

6.2.0.ER6

How reproducible:

Always

Steps to Reproduce:
1. Start EAP in standalone mode
2. Try to invoke the equivalent of "/subsystem=security:describe" via JMX programmatically against the running EAP

Actual results:

JBAS011363: Not authorized to invoke operation: 'describe'

Expected results:

The equivalent of the result in CLI.

Comment 1 JBoss JIRA Server 2013-10-24 15:38:12 UTC
Ladislav Thon <lthon> made a comment on jira WFLY-2379

I'm not asking to publicize it. In fact, I would be entirely satisfied if the non-published operations were only accessible via the native protocol and other management interfaces gave a "not found" response. We can reformulate this issue to say "give me a proper error message, please".

Comment 2 JBoss JIRA Server 2013-10-24 16:04:30 UTC
Ladislav Thon <lthon> made a comment on jira WFLY-2379

(To make myself entirely clear: what I'm asking for is consistency. I can't see a reason why it's possible to invoke {{:describe}} via the HTTP interface, but not via JMX. Either both should  succeed, or both should fail with a _not found_ message.)

Comment 3 Brian Stansberry 2013-10-24 16:16:38 UTC
I changed the title. We won't be exposing these over the other interfaces. This isn't really related to RBAC.


Note You need to log in before you can comment on or make changes to this bug.