[OpenAFS] Re: [OpenAFS-announce] OpenAFS Security Advisory 2007-001:
privilege escalation in Unix-based clients
Jason Edgecombe
jason@rampaginggeek.com
Wed, 21 Mar 2007 13:39:37 -0400
Jeffrey Altman wrote:
> Jason Edgecombe wrote:
>
>> Dr A V Le Blanc wrote:
>>
>>> Hm, I have a difficulty about this one. We have a large number of
>>> systems
>>> to which some thousands of users have access, virtually none of which
>>> are authenticated in AFS. These systems have almost their entire
>>> /lib, /bin, and all of /usr in AFS. A substantial part of them
>>> would stop working if we had all suid/sgid programs disabled by
>>> default. Short of copying every single binary of this kind to the
>>> local disk and chmoding it, I can't think how we can cope with
>>> setting suid off. Are we to have a permanent security hole? Or is
>>> there another way of dealing with this?
>>>
>>> -- Owen
>>>
>> If these are Linux systems, then you could try doing a loopback mount
>> out of AFS. It's not as flexible, but would still work and would allow
>> suid even when AFS disallows it.
>> The basics are make a big file and format it as ext2/ext3/squashfs, put
>> all of your binaries in it. Copy that file out to AFS and have clients
>> mount that file as /usr, /lib, /bin.
>>
>
> The issue is that copying files out of /afs that have the suid bit set
> is not safe as long as the cache contents were populated using an
> unauthenticated connection to the file servers. This is because when
> unauthenticated connections are used there is no keying material
> available to prevent modifications to either the status data that
> indicates that a file should or should not be executed suid or the
> contents of the file itself.
>
> It is for this reason that suid is being disabled by default. Of
> course, if you want to execute processes out of /afs suid you can
> do so simply by "fs setcell -cell <cellname> -suid". You do not
> need to use a loopback mount to work around the default settings of
> the cache manager.
>
> That being said, the only real workaround is to locally copy the
> files using authenticated connections
>
> <obtain tokens>
> fs flush <dir>
> fs flush <file>
> cp -p <file> /local/path
> chmod xxx /local/path
>
> and then execute the suid files from the local disk.
>
> There simply is no other method available at the moment within AFS.
>
> Jeffrey Altman
> Secure Endpoints Inc.
>
Ok, so the summary is that any file copied out of /afs while not
authenticated (system:anyuser) can be spoofed. If this correct?
Can this be done from a machine other than the client or server?
I use cfengine for management of some Linux machines. If I can't trust
the files in /afs, then I need to look at using cfengine's native
protocol to copy files instead of afs.
Can I run fs setcell in a startup script to get the same effect as
upgrading the client?
Jason