[cap-talk] Confused Deputies in Capability Systems
David-Sarah Hopwood
david.hopwood at industrial-designers.co.uk
Sat Feb 7 17:24:37 EST 2009
Karp, Alan H wrote:
> Toby Murray wrote:
>> The only means of protecting itself against such attacks is for the
>> service to perform input validation on capabilities it is passed -- this
>> is why object-cap systems include capability-authentication mechanisms
>> primitively (e.g. trademarks in E, Cajita, KeyKOS and EROS, static
>> checking of final types in Joe-E etc.).
>
> Validating capabilities passed as arguments does make sense, just not
> in an ocap system except when you're making a decision to use rights
> amplification. Norm's original paper listed a number of reasons that
> input validation is difficult in the ACL case. I wouldn't be surprised
> to learn that cap validation has a similar set of problems.
>
> Validating capabilities does make sense in other environments. Tyler
> pointed out a vulnerability in our Zebra Copy implementation. In that
> work, capabilities are SAML authorization assertions. Each service
> reference passed as an argument is represented by a SAML authorization
> assertion delegating to the service being invoked the right in the
> assertion. We neglected to verify that the invoker had the right being
> delegated, which allowed a confused deputy attack.
This is not a confused deputy attack. It's a mistake in the implementation
of the capability system TCB. (It's also not a particularly subtle mistake,
since it directly violates a assertion of the system design.)
> You can't make that kind of mistake in an ocap system because the ability
> to designate the object is sufficient proof of the right to use it.
No, you could make a precisely analogous mistake in the *implementation* of
an ocap system.
--
David-Sarah Hopwood ⚥
More information about the cap-talk
mailing list