首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第34期->最新漏洞
期刊号: 类型: 关键词:
FreeBSD FFS文件系统任意块读写漏洞

日期:2002-08-16

发布日期:2002-08-07
更新日期:2002-08-08

受影响系统:
FreeBSD FreeBSD kernel
    - FreeBSD 4.6.1
    - FreeBSD 4.5
    - FreeBSD 4.4
    - FreeBSD 4.3
    - FreeBSD 4.2
    - FreeBSD 4.1
    - FreeBSD 4.0
不受影响系统:
FreeBSD FreeBSD kernel
    - FreeBSD 4.6.1-RELEASE-p5
    - FreeBSD 4.5-RELEASE-p14
    - FreeBSD 4.4-RELEASE-p21
描述:
----------------------------------------------------------------------
CVE(CAN) ID: CAN-2002-0829

FreeBSD缺省使用Berkeley Fast File System (FFS)文件系统。

在最大可允许的FFS文件大小的计算过程中有一个缺陷,可允许用户创建的文件超过FreeBSD虚拟内存系统的处理能力。这些文件被访问后会导致整数溢出,这会使得文件系统元数据(metadata)被映射到用户文件中,使用户能访问任意的文件系统块。本地攻击者可破坏文件系统导致拒绝服务。本地攻击者还能在本地文件系统中读写任意文件,获得超级用户权限。

本漏洞只存在于块大小为16k或更大的i386结构的FFS文件系统,或块大小为32k的alpha结构中。另外,文件系统的可用空间至少必须有6个块,且用户必须对文件系统中至少一个文件有写权限。4.5-RELEASE之前版本中,各种结构的FreeBSD FFS文件系统缺省块大小为8k到16k。

<*来源:Matt Dillon (dillon@FreeBSD.org)
        Ian Dowse (iedowse@FreeBSD.org)
        Tor Egge (tegge@FreeBSD.org)
  
  链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:35.ffs.asc
*>

建议:
----------------------------------------------------------------------
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 在16k块的文件系统中,当进程的文件大小资源限制(RLIMIT_FSIZE)为63 MB或更小时,本漏洞无法利用。要做到这一点可以修改/etc/login.conf使相应的登录分类(通常为`default'),使其包含下列一个栏目表项:

        :filesize=63m:\

编辑完/etc/login.conf后,必须用下列命令重建相应的capability数据库:

   # cap_mkdb /etc/login.conf

详情请见login.conf(5)。注意这不会影响正在运行的进程和已经登录的用户启动的新进程。

我们目前尚不清楚32k或更大块的文件系统修改时应进行多大限制,可能会小于或大于63 MB。

`login'和`sshd'等程序必须读取和使用login.conf。注意,某些第三方应用程序可能会有自己的登录功能而不使用login.conf。

厂商补丁:

FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-02:35)以及相应补丁:
FreeBSD-SA-02:35:local users may read and write arbitrary blocks on an FFS filesystem
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:35.ffs.asc

补丁下载:

1) 将受影响的系统升级到4.6-STABLE;或相应修正日期后发布的RELENG_4_6 (4.6.1-
RELEASE-p5)、RELENG_4_5 (4.5-RELEASE-p14)或RELENG_4_4 (4.4-RELEASE-p21)
security branche。

2) 为现有系统安装补丁:

a) 从下列地址下载相应的补丁并用你的PGP工具核实分开的PGP签名。经测试,下列补
丁适用于所有FreeBSD 4.x版本。

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

b) 按照下列介绍重编kernel并重启系统:
http://www.freebsd.org/handbook/kernelconfig.html
版权所有,未经许可,不得转载