OpenSSH是一种开放源码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下。 3.7版本之前的OpenSSH包含一个缓冲区管理错误,远程攻击者可能利用这个漏洞进行拒绝服务或者可能以OpenSSH进程权限在系统上执行任意指令。 当OpenSSH接收到一个长度超过已分配缓冲区大小的数据包时会试图重新分配一块大的内存,这时记录当前缓冲区大小的变量值会相应增加,新长度值会被检查是否符合要求,如果检查失败会调用fatal()来清理并退出,在某些情况下,执行清理工作的代码可能会按新缓冲区长度的大小去释放那个实际并没有扩大的缓冲区,结果导致缓冲区外的数据被重写为NULL值。这样可能造成拒绝服务攻击或执行任意指令。
OpenSSH是一种开放源码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下。 3.7版本之前的OpenSSH包含一个缓冲区管理错误,远程攻击者可能利用这个漏洞进行拒绝服务或者可能以OpenSSH进程权限在系统上执行任意指令。 当OpenSSH接收到一个长度超过已分配缓冲区大小的数据包时会试图重新分配一块大的内存,这时记录当前缓冲区大小的变量值会相应增加,新长度值会被检查是否符合要求,如果检查失败会调用fatal()来清理并退出,在某些情况下,执行清理工作的代码可能会按新缓冲区长度的大小去释放那个实际并没有扩大的缓冲区,结果导致缓冲区外的数据被重写为NULL值。这样可能造成拒绝服务攻击或执行任意指令。