首页 -> 安全研究

安全研究

安全漏洞
OpenSSH缓冲区管理操作远程溢出漏洞

发布日期:2003-09-16
更新日期:2003-09-17

受影响系统:
OpenSSH OpenSSH 3.6.1 p2
OpenSSH OpenSSH 3.6.1 p1
OpenSSH OpenSSH 3.5
OpenSSH OpenSSH 3.4 p1
OpenSSH OpenSSH 3.4
OpenSSH OpenSSH 3.3 p1
OpenSSH OpenSSH 3.3
OpenSSH OpenSSH 3.2.3 p1
OpenSSH OpenSSH 3.2.2 p1
OpenSSH OpenSSH 3.2
OpenSSH OpenSSH 3.1 p1
OpenSSH OpenSSH 3.1
OpenSSH OpenSSH 3.0.2
OpenSSH OpenSSH 3.0.1
OpenSSH OpenSSH 3.0
不受影响系统:
OpenSSH OpenSSH 3.7
描述:
CVE(CAN) ID: CVE-2003-0693

OpenSSH是一种开放源码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下。

3.7版本之前的OpenSSH包含一个缓冲区管理错误,远程攻击者可能利用这个漏洞进行拒绝服务或者可能以OpenSSH进程权限在系统上执行任意指令。

当OpenSSH接收到一个长度超过已分配缓冲区大小的数据包时会试图重新分配一块大的内存,这时记录当前缓冲区大小的变量值会相应增加,新长度值会被检查是否符合要求,如果检查失败会调用fatal()来清理并退出,在某些情况下,执行清理工作的代码可能会按新缓冲区长度的大小去释放那个实际并没有扩大的缓冲区,结果导致缓冲区外的数据被重写为NULL值。这样可能造成拒绝服务攻击或执行任意指令。

<*来源:OpenSSH Security Advisory
  
  链接:http://www.openssh.com/txt/buffer.adv
        http://www.cert.org/advisories/CA-2003-24.html
        http://www.linux-mandrake.com/en/security/2003/2003-090.php
        http://www.debian.org/security/2003/dsa-382
        https://www.redhat.com/support/errata/RHSA-2003-279.html
        ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:12.openssh.asc
*>

建议:
临时解决方法:

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

* 在边界或者主机防火墙上过滤不可信任IP对SSH服务的访问请求,通常是22/TCP端口。

* 使用权限分隔来使影响最小化

运行OpenSSH 3.2或更高版本的系统管理员可以通过在sshd配置文件中使用"UsePrivilegeSeparation"配置选项来降低这个漏洞的影响。一般来讲,可以通过创建privsep用户,设置受限制的(chroot)环境,然后向/etc/ssh/sshd_config中添加以下命令行来实现上述操作:

   UsePrivilegeSeparation yes

这个临时解决方案不能防止攻击者利用这个漏洞,但由于权限分隔机制,攻击者会被局限在仅有受限权限的受限制的chroot环境中。这个临时解决方案不能防止漏洞导致拒绝服务。不是所有的操作系统厂商都执行了权限分隔代码,在某些操作系统中代码还可能限制OpenSSH的功能。

厂商补丁:

Debian
------
Debian已经为此发布了一个安全公告(DSA-382-1)以及相应补丁:
DSA-382-1:OpenSSH buffer management fix
链接:http://www.debian.org/security/2002/dsa-382

补丁下载:

Source archives:

http://security.debian.org/pool/updates/main/o/openssh/openssh_3.4p1-1.1.diff.gz
Size/MD5 checksum:    36506 9defe00f0297a22395b2f17e34bae852
http://security.debian.org/pool/updates/main/o/openssh/openssh_3.4p1-1.1.dsc
Size/MD5 checksum:     1338 8fc3790171311bcf8fe202edf884e000

alpha architecture (DEC Alpha)

http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_alpha.deb
Size/MD5 checksum:   849796 9125f955f4649ee1d8ec942b051f67e1
http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_alpha.deb
Size/MD5 checksum:    35724 93863e66e77fc7c6cca09636e01fce96

arm architecture (ARM)

http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_arm.deb
Size/MD5 checksum:   658012 21675964771355a0ae456fc5927245b2
http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_arm.deb
Size/MD5 checksum:    34958 6abebe99d34e7c4a1bbcddcffe50ca6e

hppa architecture (HP PA RISC)

http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_hppa.deb
Size/MD5 checksum:    35318 b3bc13ec29b99687e8165a8250695e3c
http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_hppa.deb
Size/MD5 checksum:   755464 100a06cde2e02486502fef1283777102

i386 architecture (Intel ia32)

http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_i386.deb
Size/MD5 checksum:   642460 ee27cd953e87b32e6b1c1b09fcdb7aa2
http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_i386.deb
Size/MD5 checksum:    35236 caf803cd286646300d68576724cf236a

ia64 architecture (Intel ia64)

http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_ia64.deb
Size/MD5 checksum:    36728 90006b98e1a29a9e631ee335f9596262
http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_ia64.deb
Size/MD5 checksum:  1002494 9bf4331e06a35a025ee8617fece7fa4c

mips architecture (MIPS (Big Endian))

http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_mips.deb
Size/MD5 checksum:    35246 866ebeefc0d64307f78c0aa49f2eb470
http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_mips.deb
Size/MD5 checksum:   729782 67b72adc6041f24eeeb0d35cb37a27e6

mipsel architecture (MIPS (Little Endian))

http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_mipsel.deb
Size/MD5 checksum:    35208 bf5051b7e2f41ce571f5161578db62f9
http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_mipsel.deb
Size/MD5 checksum:   727196 96122a4ac373f66b2218ec4febecff27

m68k architecture (Motorola Mc680x0)

http://security.debian.org/pool/updates/main/o/openssh/ssh-askpass-gnome_3.4p1-1.1_m68k.deb
Size/MD5 checksum:    35166 2f6b556a3c3a18ccf31933976ef48186
http://security.debian.org/pool/updates/main/o/openssh/ssh_3.4p1-1.1_m68k.deb
Siz


补丁安装方法:

1. 手工安装补丁包:

  首先,使用下面的命令来下载补丁软件:
  # wget url  (url是补丁下载链接地址)

  然后,使用下面的命令来安装补丁:  
  # dpkg -i file.deb (file是相应的补丁名)

2. 使用apt-get自动安装补丁包:

   首先,使用下面的命令更新内部数据库:
   # apt-get update
  
   然后,使用下面的命令安装更新软件包:
   # apt-get upgrade

FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-03:12)以及相应补丁:
FreeBSD-SA-03:12:OpenSSH buffer management error
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:12.openssh.asc

已确认以下补丁已被应用到更正日期之前的FreeBSD 4.x和FreeBSD 5.x系统中。

从以下位置下载合适的补丁及相关的PGP签名,并使用PGP工具验证签名。

[FreeBSD 4.3到4.5]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:12/buffer45.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:12/buffer45.patch.asc

[FreeBSD 4.6 and later, FreeBSD 5.0 and later]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:12/buffer46.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-03:12/buffer46.patch.asc

以root执行以下命令:

# cd /usr/src
# patch < /path/to/sshd.patch
# cd /usr/src/secure/lib/libssh
# make depend && make all install
# cd /usr/src/secure/usr.sbin/sshd
# make depend && make all install
# cd /usr/src/secure/usr.bin/ssh
# make depend && make all install

确认在升级后重启`sshd'。

# kill `cat /var/run/sshd.pid`
# (. /etc/rc.conf && ${sshd_program:-/usr/bin/sshd} ${sshd_flags})

[对于OpenSSH port]

执行以下步骤之一:

1) 升级你的全部port集合并重建OpenSSH port。

2) 卸载旧的软件包并安装以下目录中的新软件包:

[i386]
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/security/

[其他平台]
由于缺少构造资源,目前还不能为其他平台自动生成软件包。

3) 从以下位置为openssh或openssh-portable port下载新的port框架:

http://www.freebsd.org/ports/

并使用它来重构port。

4) 使用portcheckout工具来自动实现上文中的选项(3)。可以从/usr/ports/devel/portcheckout
获得portcheckout port,或以下位置获得软件包:

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/Latest/portcheckout.tgz
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/Latest/portcheckout.tgz

确认在升级后重启`sshd'。

# kill `cat /var/run/sshd.pid`
# test -x /usr/local/etc/rc.d/sshd.sh && sh /usr/local/etc/rc.d/sshd.sh start

MandrakeSoft
------------
http://www.debian.org/security/2003/dsa-382

OpenSSH
-------
目前厂商已经在3.7及以后版本的软件中修补了此漏洞,请到厂商的主页下载:

ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2003:279-01)以及相应补丁:
RHSA-2003:279-01:Updated OpenSSH packages fix potential vulnerability
链接:https://www.redhat.com/support/errata/RHSA-2003-279.html

补丁下载:

Red Hat Linux 7.1:

SRPMS:
ftp://updates.redhat.com/7.1/en/os/SRPMS/openssh-3.1p1-9.src.rpm

i386:
ftp://updates.redhat.com/7.1/en/os/i386/openssh-3.1p1-9.i386.rpm
ftp://updates.redhat.com/7.1/en/os/i386/openssh-clients-3.1p1-9.i386.rpm
ftp://updates.redhat.com/7.1/en/os/i386/openssh-server-3.1p1-9.i386.rpm
ftp://updates.redhat.com/7.1/en/os/i386/openssh-askpass-3.1p1-9.i386.rpm
ftp://updates.redhat.com/7.1/en/os/i386/openssh-askpass-gnome-3.1p1-9.i386.rpm

Red Hat Linux 7.2:

SRPMS:
ftp://updates.redhat.com/7.2/en/os/SRPMS/openssh-3.1p1-10.src.rpm

i386:
ftp://updates.redhat.com/7.2/en/os/i386/openssh-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.2/en/os/i386/openssh-clients-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.2/en/os/i386/openssh-server-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.2/en/os/i386/openssh-askpass-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.2/en/os/i386/openssh-askpass-gnome-3.1p1-10.i386.rpm

ia64:
ftp://updates.redhat.com/7.2/en/os/ia64/openssh-3.1p1-10.ia64.rpm
ftp://updates.redhat.com/7.2/en/os/ia64/openssh-clients-3.1p1-10.ia64.rpm
ftp://updates.redhat.com/7.2/en/os/ia64/openssh-server-3.1p1-10.ia64.rpm
ftp://updates.redhat.com/7.2/en/os/ia64/openssh-askpass-3.1p1-10.ia64.rpm
ftp://updates.redhat.com/7.2/en/os/ia64/openssh-askpass-gnome-3.1p1-10.ia64.rpm

Red Hat Linux 7.3:

SRPMS:
ftp://updates.redhat.com/7.3/en/os/SRPMS/openssh-3.1p1-10.src.rpm

i386:
ftp://updates.redhat.com/7.3/en/os/i386/openssh-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.3/en/os/i386/openssh-clients-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.3/en/os/i386/openssh-server-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.3/en/os/i386/openssh-askpass-3.1p1-10.i386.rpm
ftp://updates.redhat.com/7.3/en/os/i386/openssh-askpass-gnome-3.1p1-10.i386.rpm

Red Hat Linux 8.0:

SRPMS:
ftp://updates.redhat.com/8.0/en/os/SRPMS/openssh-3.4p1-5.src.rpm

i386:
ftp://updates.redhat.com/8.0/en/os/i386/openssh-3.4p1-5.i386.rpm
ftp://updates.redhat.com/8.0/en/os/i386/openssh-clients-3.4p1-5.i386.rpm
ftp://updates.redhat.com/8.0/en/os/i386/openssh-server-3.4p1-5.i386.rpm
ftp://updates.redhat.com/8.0/en/os/i386/openssh-askpass-3.4p1-5.i386.rpm
ftp://updates.redhat.com/8.0/en/os/i386/openssh-askpass-gnome-3.4p1-5.i386.rpm

Red Hat Linux 9:

SRPMS:
ftp://updates.redhat.com/9/en/os/SRPMS/openssh-3.5p1-9.src.rpm

i386:
ftp://updates.redhat.com/9/en/os/i386/openssh-3.5p1-9.i386.rpm
ftp://updates.redhat.com/9/en/os/i386/openssh-clients-3.5p1-9.i386.rpm
ftp://updates.redhat.com/9/en/os/i386/openssh-server-3.5p1-9.i386.rpm
ftp://updates.redhat.com/9/en/os/i386/openssh-askpass-3.5p1-9.i386.rpm
ftp://updates.redhat.com/9/en/os/i386/openssh-askpass-gnome-3.5p1-9.i386.rpm

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