OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenPAM是PAM架构的实现,允许使用可加载的模块实现管理员所定义的用户认证和会话管理。OpenSSH和FreeBSD中很多其他应用程序都使用OpenPAM提供一致的可配置的认证系统。 OpenSSH与OpenPAM的进程交互机制上存在漏洞,远程攻击者可能利用此漏洞对OpenSSH执行拒绝服务攻击,导致OpenSSH无法处理正常请求。 由于OpenSSH和OpenPAM之间存在设计冲突(一个是事件驱动而另一个为回调驱动),因此OpenSSH必须fork子进程以处理对PAM框架的调用。但是,如果非特权子进程终止而PAM认证仍然继续,父进程就会错误地相信PAM子进程也已终止。因此父进程就会终止,留下PAM子进程。 根据OpenSSH执行内部计算的方法,主OpenSSH服务进程会将这些孤儿PAM子进程计算为尚未完成的连接。一旦累积了一定数目的孤儿进程的话,主进程就会认为已经过载,不再接受客户端连接。 攻击者可以通过反复连接到有漏洞的服务器、等待口令提示并关闭连接导致OpenSSH停止接受客户端连接,直到系统重启或管理员手动杀死孤儿PAM进程。
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenPAM是PAM架构的实现,允许使用可加载的模块实现管理员所定义的用户认证和会话管理。OpenSSH和FreeBSD中很多其他应用程序都使用OpenPAM提供一致的可配置的认证系统。 OpenSSH与OpenPAM的进程交互机制上存在漏洞,远程攻击者可能利用此漏洞对OpenSSH执行拒绝服务攻击,导致OpenSSH无法处理正常请求。 由于OpenSSH和OpenPAM之间存在设计冲突(一个是事件驱动而另一个为回调驱动),因此OpenSSH必须fork子进程以处理对PAM框架的调用。但是,如果非特权子进程终止而PAM认证仍然继续,父进程就会错误地相信PAM子进程也已终止。因此父进程就会终止,留下PAM子进程。 根据OpenSSH执行内部计算的方法,主OpenSSH服务进程会将这些孤儿PAM子进程计算为尚未完成的连接。一旦累积了一定数目的孤儿进程的话,主进程就会认为已经过载,不再接受客户端连接。 攻击者可以通过反复连接到有漏洞的服务器、等待口令提示并关闭连接导致OpenSSH停止接受客户端连接,直到系统重启或管理员手动杀死孤儿PAM进程。