[Apparmor-dev] Sandbox execution templates for security
Lincoln Yeoh
lyeoh at pop.jaring.my
Wed Sep 26 09:39:24 MDT 2007
Hi,
While Apparmor is a good start and is already useful, I think it is
still too low level for "Joe Sixpack" or "Aunt May" to use.
Scenarios that they could easily be taught to handle _reasonably_
safely would be something like the following:
Assume the user launches "some_game".
Scenario A:
user gets a dialog box with a thick red border:
some_game requests "Administrator" privileges to run. Allow?
Possible options:
Yes
No
[ ] Always allow
Button: Advanced>>
<font color="red">WARNING!!!<font> running something with
"Administrator" privileges could expose your computer and data to
security problems.
Scenario B
user gets a non-scary dialog box
some_game requests "Guest game" privileges to run. Allow?
Possible options:
Yes
No
[ ] Always allow
Button: Advanced>>
Scenario C
user doesn't get a dialog box at all -
i) the program is signed by a trusted authority (either user trusted,
or O/S vendor ), and if it is requesting a custom sandbox execution
template, that template is signed by a trusted party, and the certs,
program and template are not on a blacklist/revoked list (in which
case a warning/error should appear).
Or
ii) a previous "always allow" applies to the program and sandbox template.
I'm not saying that apparmor should do all this, but rather that it
might be possible to build something like this on top of Apparmor.
This of course isn't easy to implement. It would likely require
standardization and deciding of many things - application specific
directories, application specific temporary directories, different
directories where files can be shared, network access, audio
recording/playback access (most stuff shouldn't be able to secretly
record sound and send it out over the network ;) ), input device
access, what's allowed to run in fullscreen or windowed, so on and so forth.
And of course a manageable list of standard templates that will fit
90% of the popular apps (email program, browser, word processor,
music player, etc), and be understandable/recognizable to "Joe Sixpack".
Still, I suggest that something like this is the way to go. For one,
it should be easier to figure out whether a sandbox template is
unsafe than it is to figure out whether a program would misbehave or
not (which is similar to solving a halting problem ;) ).
Lastly, I'm no expert in UI design or programming. I'm not even sure
we should call this sandbox template - as it seems to be used by
wikis. It's a bit similar in philosophy to Design by Contract, but
execution contract might get the law enforcement people a bit too excited :p.
Regards,
Link.
More information about the Apparmor-dev
mailing list