安全研究
安全漏洞
OpenSSH远程PAM拒绝服务漏洞
发布日期:2006-03-01
更新日期:2006-03-01
受影响系统:
FreeBSD FreeBSD 5.4不受影响系统:
FreeBSD FreeBSD 5.3
OpenBSD OpenSSH 3.8.1p1
OpenBSD OpenSSH 3.9p1描述:
BUGTRAQ ID: 16892
CVE(CAN) ID: CVE-2006-0883
OpenSSH是SSH协议组的实现,可为各种服务提供加密的认证传输,包括远程shell访问。OpenPAM是PAM架构的实现,允许使用可加载的模块实现管理员所定义的用户认证和会话管理。OpenSSH和FreeBSD中很多其他应用程序都使用OpenPAM提供一致的可配置的认证系统。
OpenSSH与OpenPAM的进程交互机制上存在漏洞,远程攻击者可能利用此漏洞对OpenSSH执行拒绝服务攻击,导致OpenSSH无法处理正常请求。
由于OpenSSH和OpenPAM之间存在设计冲突(一个是事件驱动而另一个为回调驱动),因此OpenSSH必须fork子进程以处理对PAM框架的调用。但是,如果非特权子进程终止而PAM认证仍然继续,父进程就会错误地相信PAM子进程也已终止。因此父进程就会终止,留下PAM子进程。
根据OpenSSH执行内部计算的方法,主OpenSSH服务进程会将这些孤儿PAM子进程计算为尚未完成的连接。一旦累积了一定数目的孤儿进程的话,主进程就会认为已经过载,不再接受客户端连接。
攻击者可以通过反复连接到有漏洞的服务器、等待口令提示并关闭连接导致OpenSSH停止接受客户端连接,直到系统重启或管理员手动杀死孤儿PAM进程。
<*来源:William M. Grim (wgrim@siue.edu)
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:09.openssh.asc
*>
建议:
临时解决方法:
以下命令可以显示孤儿PAM进程列表:
# pgrep -lf 'sshd.*\[pam\]'
以下命令可以杀死孤儿PAM进程:
# pkill -f 'sshd.*\[pam\]'
如果要防止OpenSSH留下孤儿PAM进程,执行以下操作之一:
1) 在OpenSSH中禁用PAM认证。用户仍可以使用他们的Unix口令、OPIE或SSH密钥登录。
如果要实现这一点,以root执行以下命令:
# echo 'UsePAM no' >>/etc/ssh/sshd_config
# /etc/rc.d/sshd restart
2) 如果无法禁用PAM的话(例如您使用RADIUS认证或在SQL数据库中储存用户口令),则应禁用权限分离。但是,这可能导致OpenSSH受未知bug的影响,仅应做为最后的选择。
如果要实现这一点,以root执行以下命令:
# echo 'UsePrivilegeSeparation no' >>/etc/ssh/sshd_config
# /etc/rc.d/sshd restart
厂商补丁:
FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-06:09)以及相应补丁:
FreeBSD-SA-06:09:Remote denial of service in OpenSSH
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:09.openssh.asc
补丁下载:
执行以下步骤之一:
1) 将有漏洞的系统升级到5-STABLE,或修改日期之后的RELENG_5_4或RELENG_5_3安全版本.
2) 为当前系统打补丁:
以下补丁确认可应用于FreeBSD 5.3和5.4系统.
a) 从以下位置下载相关补丁,并使用PGP工具验证附带的PGP签名.
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:09/openssh.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:09/openssh.patch.asc
b) 以root执行以下命令:
# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/secure/lib/libssh
# make obj && make depend && make && make install
# cd /usr/src/secure/usr.sbin/sshd
# make obj && make depend && make && make install
# /etc/rc.d/sshd restart
OpenBSD
-------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
OpenBSD openssh-3.9p1.tar.gz
ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.9p1.tar.gz
浏览次数:4678
严重程度:0(网友投票)
绿盟科技给您安全的保障
