Linux SSH 1.2.27-8i.src.rpm认证程序存在漏洞发布时间:2000-05-03 更新时间:2001-05-03 严重程度:高 威胁程度:远程管理员权限 错误类型:设计错误 利用方式:服务器模式 受影响系统 SSH 1.2.27-7us.rpm;SSH 1.2.27-7i.rpm详细描述 从ftp://ftp.zedz.net/pub/cryptoI/incoming下的该 RPM包存在错误的代码,没有进行正确的安全检查,如果 使用了补丁程序,用户可以不经过认证进入系统。但象是1.2.27-7us.rpm和1.2.27-7i.rpm的工具不受此漏洞的影 响。 这个错误的代码补丁是针对有关PAM认证的补丁,起代码 如下所示: +#ifdef HAVE_PAM + { + retval = origretval; + pampasswd = xstrdup(password); + if (retval == PAM_SUCCESS) + retval = pam_authenticate ((pam_handle_t *)pamh, 0); + if (retval == PAM_SUCCESS || retval == PAM_AUTH_ERR) + retval = pam_acct_mgmt ((pam_handle_t *)pamh, 0); + xfree(pampasswd); + } +#else /* HAVE_PAM */ 注意在最后一个'if'声明中--无论pam_authenticate()调 用成功与否,pam_authenticate()都将覆写retval的内容 。假定pam_acct_mgmt()调用能成功,就打开会话连接保留 下面补丁代码来处理PAM认证: +#ifdef HAVE_PAM + { + if (retval == PAM_SUCCESS) + retval = pam_open_session ((pam_handle_t *)pamh, 0); + return (retval == PAM_SUCCESS); + } +#endif /* HAVE_PAM */ 通过运行补丁命令patch -p0 -b < ssh-1.2.27-pam.patch,我们得到如下的文件: patching file `ssh-1.2.27/acconfig.h' patching file `ssh-1.2.27/auth-passwd.c' patching file `ssh-1.2.27/config.h.in' patching file `ssh-1.2.27/configure.in' patching file `ssh-1.2.27/sshd.c' 这段错误代码被插入到auth-passwd.c中的auth_password()代码的745-755行和 879-885行处。 测试代码 系统上的/etc/ssh/sshd_config文件包含'PermitRootLogin=yes',结果可以使远程或者本地用户 通过ROOT身份和一个非空密码来进行ROOT权限的访问。 如果pigpen系统上配置了这个存在漏洞的SSH包,你 可以使用下面的方法来访问: % ssh -l joe pigpen joe@pigpen's password:123 ... [joe@pigpen]$ 解决方案 删除有问题的版本,重新安装1.2.27-7us版本;或者使用OpenSSH , http://www.openssh.com 相关信息 |