Re: AppArmor FAQ

Joshua Brindle
2007-04-25T01:03:41Z

Crispin Cowan wrote:
> David Wagner wrote:
>
>> James Morris wrote:
>>
>>
>>> [...] you can change the behavior of the application and then bypass
>>> policy entirely by utilizing any mechanism other than direct filesystem
>>> access: IPC, shared memory, Unix domain sockets, local IP networking,
>>> remote networking etc.
>>>
>>>
>> [...]
>>
>>
>>> Just look at their code and their own description of AppArmor.
>>>
>>>
>> My gosh, you're right. What the heck? With all due respect to the
>> developers of AppArmor, I can't help thinking that that's pretty lame.
>> I think this raises substantial questions about the value of AppArmor.
>> What is the point of having a jail if it leaves gaping holes that
>> malicious code could use to escape?
>>
>> And why isn't this documented clearly, with the implications fully
>> explained?
>>
>> I would like to hear the AppArmor developers defend this design decision.
>>
>>
> It was a simplicity trade off at the time, when AppArmor was mostly
> aimed at servers, and there was no HAL or DBUS. Now it is definitely a
> limitation that we are addressing. We are working on a mediation system
> for what kind of IPC a confined process can do
> http://forge.novell.com/pipermail/apparmor-dev/2007-April/000503.html
>
>
Also, things like:

share_mem /usr/bin/firefox r, # /bin/foo can share memory with /usr/bin/firefox for read only

clearly show that you aren't using native abstractions for IPC. The
native abstraction for shared memory would be the key used when creating
the shared memory segment. The same goes for message queues which are
noticeably missing from the "simplified" IPC model.

This, of course, begs the question of whether you are using native
abstractions for profiles at all, processes have nothing to do with the
binary they started from after they've been started. The binary on disk
could be something entirely different than the process from which it ran.