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

OpenSSH是一种开放源码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下。
 
3.7版本之前的OpenSSH包含一个缓冲区管理错误,远程攻击者可能利用这个漏洞进行拒绝服务或者可能以OpenSSH进程权限在系统上执行任意指令。
 
当OpenSSH接收到一个长度超过已分配缓冲区大小的数据包时会试图重新分配一块大的内存,这时记录当前缓冲区大小的变量值会相应增加,新长度值会被检查是否符合要求,如果检查失败会调用fatal()来清理并退出,在某些情况下,执行清理工作的代码可能会按新缓冲区长度的大小去释放那个实际并没有扩大的缓冲区,结果导致缓冲区外的数据被重写为NULL值。这样可能造成拒绝服务攻击或执行任意指令。
 
 
 
 
解决方法
临时解决方法:
 
如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:
 
* 在边界或者主机防火墙上过滤不可信任IP对SSH服务的访问请求,通常是22/TCP端口。
 
* 使用权限分隔来使影响最小化
 
运行OpenSSH 3.2或更高版本的系统管理员可以通过在sshd配置文件中使用"UsePrivilegeSeparation"配置选项来降低这个漏洞的影响。一般来讲,可以通过创建privsep用户,设置受限制的(chroot)环境,然后向/etc/ssh/sshd_config中添加以下命令行来实现上述操作:
 
   UsePrivilegeSeparation yes
 
这个临时解决方案不能防止攻击者利用这个漏洞,但由于权限分隔机制,攻击者会被局限在仅有受限权限的受限制的chroot环境中。这个临时解决方案不能防止漏洞导致拒绝服务。不是所有的操作系统厂商都执行了权限分隔代码,在某些操作系统中代码还可能限制OpenSSH的功能。
 
对于具体Linux发行版中使用的版本,可以参考如下链接,确认系统是否受该漏洞影响:
 
Redhat:
    https://rhn.redhat.com/errata/RHSA-2003-279.html
    https://rhn.redhat.com/errata/RHSA-2003-280.html  
 
Mandriva:
    http://www.mandriva.com/en/support/security/advisories/advisory/MDKSA-2003:090/?name=MDKSA-2003:090
Debian:
    http://www.debian.org/security/2003/dsa-382
    http://www.debian.org/security/2003/dsa-383
posted @ 2019-05-20 09:55  mrhonest  阅读(1175)  评论(0)    收藏  举报