Re: AppArmor FAQ

Shaya Potter
2007-04-18T14:35:07Z

James Morris wrote:
> On Tue, 17 Apr 2007, Alan Cox wrote:
>
>> I'm not sure if AppArmor can be made good security for the general case,
>> but it is a model that works in the limited http environment
>> (eg .htaccess) and is something people can play with and hack on and may
>> be possible to configure to be very secure.
>
> Perhaps -- until your httpd is compromised via a buffer overflow or
> simply misbehaves due to a software or configuration flaw, then the
> assumptions being made about its use of pathnames and their security
> properties are out the window.
>
> Without security labeling of the objects being accessed, you can't protect
> against software flaws, which has been a pretty fundamental and widely
> understood requirement in general computing for at least a decade.

And that's why apparmor should be implemented as a stackable file system
with a container mechanism, and I implemented such a thing back in 2003,
albiet mostly just proof of concept and a horribly written paper (it was
my first), so never got published beyond a tech report.

http://www.ncl.cs.columbia.edu/publications/cucs-005-04.pdf

Basically, on disk labeling is not necessarily an easy mechanism for app
armor type things as it's not easy to use and different applications
have different requirements so end up w/ multiple labels attached that
are difficult to understand. That's why app armor's path based rules
are nice, each app has its own set of rules, and one can easily eyeball
what rules apply to each app, as well as easily change it. However,
since apparmor has no conception of the actual file system, so it's
broken by design.

If on the other hand it was implemented as a stackable file system, each
fs object would be labeled. The same underlying FS could be used by
multiple distinct applications w/ distinct security issues, and one
could even combine it with something like unionfs to give each domain a
separate writable area, avoiding the "output file issue", where output
filess could be used to attack the system.