[cap-talk] the "flaw" of separating designation from authority
Fred Spiessens
fred at evoluware.eu
Fri Oct 27 05:49:09 CDT 2006
On 27 Oct 2006, at 04:47, Karp, Alan H wrote:
> Fred Spiessens wrote:
>>
>> The flaw is not "separating designation from authority" but "losing
>> track of the connection between the origin of the designation
>> and the
>> origin of the authority". The former would have indicated a flaw in
>> the system, while the latter is a programming error.
>>
> Look at the example again (with the attack of specifying the log
> file).
>
> The attacker invokes
>
> MyFileSystem.writeFile(fileID: 67890 certificate: Fcert1 data: "XYZ"
>
> which the service turns into
>
> MyFileSystem.logWriteFile(fileID: 67890 fileID: 67890 data: "XYZ"
> certificates: Fcert1, Fcert2)
>
> Fcert1 comes from the attacker and allows writing of fileID: 12345.
> Fcert2 comes from the service and allows writing of fileID: 67890.
> The
> system I described and participated in building :( had no mechanism
> for
> matching up certs with arguments. Since there is a cert that allows
> writing fileID: 67890, the log ends up with "XYZ". Where is the
> programming error in the code that invokes logWriteFile? The point is
> that this system doesn't provide a way for the programmer to keep the
> connection between the origin of the designation and the origin of the
> authority.
So, MyFileSystem is provided as a file-library in the language, and
the programmer is forced to use it, directly or indirectly, when
writing client data to a file and logging it to his own file in one
atomic action?
That's a flaw in the design of the library that can render all
efforts of the programmer to keep track of the link between (the
origins of) authority and designation futile.
Clearly, it could have been prevented without using capabilities, by
designing the library like this:
logWriteFile(datafileID: 67890 logfileID: 67890 data: "XYZ"
datacertificat: Fcert1, logcertificat: Fcert2)
If the problem would be down at the operating system level itself,
then that flaw could be solved at that level in a similar way,
without re-inventing capabilities.
The system not necessarily has to provide a way for the programmer to
keep the connection between the origin of the designation and the
origin of the authority. The programmer can do that himself, as long
as the system does not impose libraries (or system calls) on him that
render his efforts futile.
In practice, we know of course, that solving the problem with
capabilities would automatically, once and for all, avoid that flaw,
but that was not my point.
cheers,
Fred.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eros-os.org/pipermail/cap-talk/attachments/20061027/239b9285/attachment.html
More information about the cap-talk
mailing list