xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

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

相关信息