您所在的位置: 首页>>网络安全>>漏洞补丁>>BSD>>

FreeBSD fpathconf文件描述符泄露漏洞

http://netsecurity.51cto.com  2005-08-10 10:35    51CTO.COM  我要评论(0)
  • 摘要:溢出错误##拒绝服务攻击##及时修补
  • 标签:漏洞

信息提供:

安全公告(或线索)提供热线:51cto.editor@gmail.com

漏洞类别:

溢出错误

攻击类型:

拒绝服务攻击

发布日期:

2003-01-06

更新日期:

2003-01-10

受影响系统:

FreeBSD FreeBSD 5.0
FreeBSD FreeBSD 4.7
FreeBSD FreeBSD 4.6.2-RELEASE
FreeBSD FreeBSD 4.6-RELEASE
FreeBSD FreeBSD 4.5-RELEASE
FreeBSD FreeBSD 4.4
FreeBSD FreeBSD 4.3-RELEASE

安全系统:

漏洞报告人:

Pine Digital Security Advisory

漏洞描述:

FreeBSD是一款免费开放源代码的UNIX操作系统。

FreeBSD中的fpathconf系统调用存在整数溢出问题,本地攻击者可以利用这个漏洞进行拒绝服务攻击或权限提升。

fpathconf系统调用可以使应用程序确定一个已经打开的文件描述符相关选项设定及能力限制情况。

在FreeBSD内核中每个文件(socket,设备或常规文件)由一个文件结构(sys/file.h)代表打开,这个结构包含一个引用计数器(int f_count),此引用计数器由fhold()函数进行增加操作,由fdrop()函数进行减少操作。如当一个文件被打开open(2)或dup(2)时,引用计数器就会增加,而当文件关闭close(2)时,引用计数器值就会减少。

多数系统调用在文件上执行操作时会调用fhold()系统调用来防止文件在中间操作过程中关闭,一旦操作结束,会发布fdrop()调用使引用释放。而fpathconf(2)系统调用没有使用fdrop()函数进行引用释放,因此不断的在某一文件描述符上调用fpathconf,如在某一引用的套接口文件描述符上请求2^31个调用,可使引用计数器(int f_count)产生一个负值,然后调用close(2)调用时使系统崩溃。

此漏洞也可以利用来获得ROOT权限,如某个文件描述符引用未分配的合法的内核内存,如果新的文件随后被打开,内核分配这个新的文件结构与原来按个文件描述符指向同一个地点,攻击者就可以对后来打开的文件进行读写访问,造成权限提升。

测试方法:

解决方法:

厂商补丁:

FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-02:44)以及相应补丁:
FreeBSD-SA-02:44:file descriptor leak in fpathconf
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:44.filedesc.asc

a)下载如下补丁,并使用PGP工具进行验证:

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:44/filedesc.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:44/filedesc.patch.asc

b)安装此补丁:

# cd /usr/src
# patch < /path/to/patch

c)根据如下地址重新编译内核并重新启动:

http://www.freebsd.org/handbook/kernelconfig.html

用户如何应对ANI漏洞
访谈:Windows平台,企业网站漏洞的攻击和防御
Web安全云时代
NAC安全访问控制
安全防范与策略
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 6.0完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有