[
https://issues.apache.org/struts/browse/WW-2316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_42637
]
Dale Newfield commented on WW-2316:
-----------------------------------
Privilege checks in the method would protect you, but in an interceptor is
easier. It's the interceptor solution that is thrown for a loop with this,
though.
Let's say you're using acegi's FilterSecurityInterceptor:
/viewFoo.html*=ROLE_ANONYMOUS,admin,user
/saveFoo.html*=admin
If you have all the methods that deal with Foo's in a single action (including
both view and save), and if you *don't* have the check in the save method, the
following is a security hole (i.e.: executable by ROLE_ANONYMOUS, where it
should only be available for admins):
/viewFoo.html?method:save
A whitelist solution with per-action settings of which methods are "safe" would
be ideal, but I think we're trying to trade configuration for convention, not
add more configuration...
> Ability to prevent method:METHOD_NAME access
> --------------------------------------------
>
> Key: WW-2316
> URL: https://issues.apache.org/struts/browse/WW-2316
> Project: Struts 2
> Issue Type: Improvement
> Components: Dispatch Filter
> Affects Versions: 2.0.11, 2.1.0
> Reporter: Dale Newfield
> Fix For: 2.1.1
>
>
> In order to allow multiple form submission buttons result in different
> behavior based on the button pressed, a specially named parameter is included
> in the form submission that instructs the ActionMapper to call a method
> indicated in the URL. This special parameter can be used to implement a
> credential escalation attack, though: If a user has suffiicient credentials
> to call a single method on an action, this provides a mechanism whereby they
> could call any method on that action. The "action!method.do" capability
> introduces a similar vulnerability, and the "allowDynamicMethodCalls" option
> closes that hole. Besides needing to provide a different mechanism to allow
> different form submission buttons to do different things, is there a large
> downside to using this same option ("allowDynamicMethodCalls") to close this
> hole as well?
> (Just to be explicit, that solution would wrap "if (allowDynamicMethodCalls)
> {" and "}" around lines 186-188 in
> org.apache.struts2.dispatcher.mapper.DefaultActionMapper.java .)
> http://www.nabble.com/forum/ViewPost.jtp?post=13710147&framed=y
> http://www.nabble.com/forum/ViewPost.jtp?post=13711925&framed=y
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.