首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第35期->最新漏洞
期刊号: 类型: 关键词:
FreeBSD系统调用有符号整数边界检查漏洞

日期:2002-09-16

FreeBSD系统调用有符号整数边界检查漏洞

发布日期:2002-08-19
更新日期:2002-08-22

受影响系统:
FreeBSD FreeBSD kernel
    - FreeBSD 4.6.1
    - FreeBSD 4.6
    - FreeBSD 4.5
    - FreeBSD 4.4
    - FreeBSD 4.3
    - FreeBSD 4.2
    - FreeBSD 4.1.1
    - FreeBSD 4.1
    - FreeBSD 4.0
不受影响系统:
FreeBSD FreeBSD kernel
    - FreeBSD 4.6.2-RELEASE
    - FreeBSD 4.6-STABLE
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 5493

FreeBSD 4.6.1-RELEASE-p10以及之前版本的内核中的几个系统调用没有对参数进行正确的边界检查,可能导致内核中的敏感信息泄漏。

FreeBSD 内核提供了如下系统调用:accept(2)、getsockname(2)、getpeername(2)、vesa(4) FBIO_GETPALETTE ioctl(2)。它们错误地假定某个参数肯定为正整数,而实际上该参数是作为有符号整数处理的。因此,系统调用碰到负数参数时,会出现边界检查失败。

如果攻击者用较大的负值参数调用受影响的系统调用,就会导致kernel返回很大一部分的kernel内存。这些内存中可能含有机密信息,如部分文件缓存或终端缓冲区等。攻击者可以直接或间接地利用这些信息提升权限。例如,终端缓冲区中可能含有用户提交的口令信息。

<*来源:Silvio Cesare (silvio@qualys.com)
  
  链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:38.signed-error.asc
*>

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

此问题没有合适的临时解决方法,您只有通过限制不可信用户访问系统来减小风险。

厂商补丁:

FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-02:38)以及相应补丁:
FreeBSD-SA-02:38:Boundary checking errors involving signed integers
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:38.signed-error.asc

补丁下载:

1) 将受影响的FreeBSD系统升级到4.6.2-RELEASE或4.6-STABLE,或相应修正日期后发
布的RELENG_4_6 (4.6.1-RELEASE-p11)、RELENG_4_5 (4.5-RELEASE-p19)或RELENG_4_4
(4.4-RELEASE-p26)security branch。

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

下列补丁适用于FreeBSD 4.x系统。

a) 从下列地址下载相应的补丁并用你的PGP工具核实分开的PGP签名。

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:38/signed-error.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:38/signed-error.patch.asc

b) 安装补丁:

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

c) 按照下列描述重新编写kernel并重启系统:

URL:http://www.freebsd.org/handbook/kernelconfig.html
版权所有,未经许可,不得转载