[cap-talk] Mungi, Iguana and Ambient Authority

Toby Murray toby.murray at dsto.defence.gov.au
Mon Jun 27 20:06:46 EDT 2005

This message came up a while ago but its taken me a while to get onto 
it. If possible, I'd like to probe deeper here to get a better 
understanding of exactly the limitations imposed by the Mungi/Iguana 
ambient authority APIs. What is gained by these APIs and what exactly is 

Charles Gray wrote:

>Hi All,
>There has recently been a lot of discussion on this list regarding
>ambient authority and the Mungi and Iguana systems. Being part of the
>Mungi group, I thought I should respond.
>While both Mungi and Iguana use ambient authority, there are two
>issues to address related to ambient authority and the 'Confused
>Deputy' problem.

>In general, in order to avoid 'Confused Deputy' attacks, a service
>must do what operating systems traditionally do: treat every user
>pointer with suspicion. In the Mungi case this means that:
> - each (buffer) capability passed from a client must be explicitly
>   validated (using the respective system call) before adding it to
>   the receiver's Clist
> - on de-referencing user pointers, a range check is required to
>   ensure that the pointer is inside the buffer passed by the client
I don't see how this affects confused deputy attacks. Could you explain 

>It is important to note that neither system is vulnerable to the
>'union' attack described previously on this list. (That is, when a
>client provides a valid READ capability for a object to which the
>service also has WRITE authority, and attempts to trick the service
>into writing there). When access to an object is validated in Mungi
>and Iguana the system tells you which capability gives you that
>access. A client trying to fool a service by providing a lesser, but
>valid, capability will be detected.
If I take your meaning, then the "server" who receives a client request 
must explicitly check each tmie after a capability invocation, what 
capability was used and whether it was a capability the server already 
held or whether it was passed by the client, and which is the correct 
kind that should have been used.
I feel that this sort of explicit checking is totally error-prone. I 
suppose it could be managed by a library below the server but it seems 
convoluted. I'm not sure what you're gaining for losing the ability to 
explicitly invoke invidivual capabilities.

>However, both Mungi and Iguana are still proper capability systems
>that can implement POLA and confinement. Both APIs allow you to
>confine programs by not granting them the ability to add capabilities
>to their clists.
>For a confined program to use a capability it must pass this to an
>external party which has the ability to enforce the necessary checks
>and act on these capabilities. This allows you to build systems on top
>of the generic Mungi and Iguana APIs which are not vulnerable to
>'Confused Deputy' attacks. Such systems can not take advantage of the
>native programming model, however they do fully support programs
>written to an explicit capability presentation model and can provide
>the exact same security guarantees. (The assumption here being the
>party that does handle the caps is part of the TCB).
 From what limited experience i have in this area, I believe that all 
capability validation should be done by the underlying security kernel, 
rather than the services ("objects" if one prefers) that run on top of 
it. Forcing each object to explicitly validate capabilities it is 
presented by clients is error-prone and tends to duplicate large amounts 
of security-critical code. The previous paragraph aboove seems to imply 
that this must occur for service providing objects. Is this true? could 
you perhaps provide an example to illustrate further?

thanks heaps,


Toby Murray
Software Engineer
Advanced Computer Capabilities Unit
Information Networks Division
DSTO, Australia

IMPORTANT: This e-mail remains the property of the Australian Defence
Organisation and is subject to the jurisdiction of section 70 of the
Crimes Act 1914. If you have received this e-mail in error, you are
requested to contact the sender and delete the e-mail.

More information about the cap-talk mailing list