[cap-talk] Confused Deputy (definitions)
Ka-Ping Yee
cap-talk at zesty.ca
Wed Oct 25 20:56:50 CDT 2006
On Wed, 25 Oct 2006, Jed at Webstart wrote:
> > > If D can access "A" with U's authority
> > > for the purposes of the request by U (as many have discussed in the
> > > case of Unix), then isn't this limited "Confused Deputy" problem solved?
> >
> >That's what 2a is about.
>
> I understand. However, in the case of Unix it seems that there is such
> a means (though awkward as some say). From the viewpoint of a Unix
> programmer/user this problem has been known about and dealt with
> adequately for years. Why do we need capabilities?
Norm talks about this a bit in his article:
http://www.cis.upenn.edu/~KeyKOS/ConfusedDeputy.html
| The system was modified by providing a new system call to *switch
| hats* which could be used to select one of its two authorities. Note
| the increase in complexity! The compiler would then be able to use
| its home files license or the invoker's license explicitly--in the
| later case, for example, saying "by the authority vested in me by my
| invoker I hereby request the opening of (SYSX)BILL" which would then
| properly fail. It soon became clear, however, that more than two
| "authorities" were necessary for some of our applications. A further
| problem was that there were other authority mechanisms besides
| access to files. Generalizations were not obvious and the
| modifications to the system were not localized. (Exercise for the
| reader: Show that access lists do not solve this problem.)
|
| Another indication of poor design is that disparate mechanisms were
| necessary to arrange separately that the compiler (1) know what file
| to write on and (2) be authorized to write on that file. The crime
| was perpetrated through unintended application of the compiler's
| authority over SYSX when writing the user's data. (If you try to
| solve this problem without capabilities, remember that the file
| (SYSX)STAT must also be protected.)
-- ?!ng
More information about the cap-talk
mailing list