首页 -> 安全研究

安全研究

安全漏洞
NetBSD重复调用TIOSCTTY IOCTL缓冲区溢出漏洞

发布日期:2002-09-17
更新日期:2002-09-23

受影响系统:
NetBSD NetBSD 1.6 beta
NetBSD NetBSD 1.5.3
NetBSD NetBSD 1.5.2
NetBSD NetBSD 1.5.1
NetBSD NetBSD 1.5 x86
NetBSD NetBSD 1.5 sh3
NetBSD NetBSD 1.5
NetBSD NetBSD 1.4.3
NetBSD NetBSD 1.4.2 x86
NetBSD NetBSD 1.4.2 SPARC
NetBSD NetBSD 1.4.2 arm32
NetBSD NetBSD 1.4.2 Alpha
NetBSD NetBSD 1.4.2
NetBSD NetBSD 1.4.1 x86
NetBSD NetBSD 1.4.1 SPARC
NetBSD NetBSD 1.4.1 sh3
NetBSD NetBSD 1.4.1 arm32
NetBSD NetBSD 1.4.1 Alpha
NetBSD NetBSD 1.4.1
NetBSD NetBSD 1.4 x86
NetBSD NetBSD 1.4 SPARC
NetBSD NetBSD 1.4 arm32
NetBSD NetBSD 1.4 Alpha
NetBSD NetBSD 1.4
不受影响系统:
NetBSD NetBSD 1.6
描述:
BUGTRAQ  ID: 5722
CVE(CAN) ID: CVE-2002-1490

NetBSD是一款开放源代码的操作系统。

会话进程在调用TIOCSCTTY ioctl缺少正确处理,本地攻击者可以利用这个漏洞进行缓冲区溢出攻击,可以导致内核崩溃。

一个进程通过派生一个子进程并父进程退出来启动新的会话,新的子进程然后调用setsid(2)建立一个新的会话,因此成为会话发起者(session leader),子进程然后再调用TIOCSCTTY ioctl。

在多个进程之间共享的结构(如会话结构)一般包含一个计数器来跟踪一个结构有多少次被引用,典型的情况下,NetBSD中使用宏来增加/递减使用的计数器,然后当计数器归零的时候结构被释放。

通过多次重复调用TIOCSCTTY,当进程退出的时候可使整数计数器溢出,导致计数器归零,并且即使其他进程仍旧引用的情况下结构也被释放,根据内核选项,这可立即导致内存被垃圾数据覆盖,或者当内存分配给其他进程的时候被随机数据覆盖,可导致内核崩溃。

<*链接:ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2002-007.txt.asc
*>

建议:
厂商补丁:

NetBSD
------
NetBSD已经为此发布了一个安全公告(NetBSD-SA2002-007)以及相应补丁:
NetBSD-SA2002-007:Repeated TIOCSCTTY ioctl can corrupt session hold counts
链接:ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2002-007.txt.asc

最新的NetBSD 1.6 release不存在此漏洞,建议用户升级到NetBSD 1.6版本。

否则你必须对内核源代码进行升级,重建和安装新的内核,一旦内核源代码更新后,安装如下指示进行内核重建和安装:

http://www.netbsd.org/Documentation/kernel/#how_to_build_a_kernel

* NetBSD-current:

    系统运行在2002-07-21之前的NetBSD-current版本必须升级到2002-07-21 NetBSD-current版本或者之后的版本。
    
    下面的目录必须从netbsd-current CVS branch (aka HEAD)升级:
        src/sys/kern/
        
    或者采用如下补丁:
    
    ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2002-007-tiocsctty.patch
    
    对文件进行补丁修复:
    
    # cd src/sys
    # patch < /path/to/SA2002-007-tiocsctty.patch
        
    按照如下方法配置,编译,安装和重新启动新内核:
    
    http://www.netbsd.org/Documentation/kernel/#building_a_kernel

* NetBSD 1.6 beta:
    
    系统运行NetBSD 1.6 BETAs和Release Candidates版本必须升级到NetBSD 1.6 release版本。
    

    下面的目录必须从netbsd-1-6 CVS branch上升级:
        src/sys/kern/
    
    或者采用如下补丁:
    
    ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2002-007-tiocsctty.patch

    对文件进行补丁修复:
    
    # cd src/sys
    # patch < /path/to/SA2002-007-tiocsctty.patch
    
     按照如下方法配置,编译,安装和重新启动新内核:
    
    http://www.netbsd.org/Documentation/kernel/#building_a_kernel  
        
* NetBSD 1.5, 1.5.1, 1.5.2, 1.5.3:

    系统运行在2002-09-05之前的NNetBSD 1.5 branch版本必须升级到2002-09-05 NetBSD 1.5 branch版本或者之后的版本。
    
    下面的目录必须从netbsd-1-5 CVS branch升级:
        src/sys/kern/
        
    或者采用如下补丁:
    
    ftp://ftp.netbsd.org/pub/NetBSD/security/patches/SA2002-007-tiocsctty.patch

    对文件进行补丁修复:
    
    # cd src/sys
    # patch < /path/to/SA2002-007-tiocsctty.patch
    
     按照如下方法配置,编译,安装和重新启动新内核:
    
    http://www.netbsd.org/Documentation/kernel/#building_a_kernel  

* NetBSD 1.4.x:

        尚无

浏览次数:3054
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障