APOP协议是收发邮件时所使用的挑战-响应加密协议。
APOP协议的MD5哈希实现上存在漏洞,远程恶意APOP服务器可能利用此漏洞猜测口令。
APOP协议允许远程攻击者通过使用特制的消息ID和MD5碰撞猜测口令的前三个字符。攻击者可以创建一对消息ID,如果口令以特定方式开始的话就会在APOP哈希中发生碰撞,因此攻击者可以扮演成为POP服务器并发送这些msg-id,客户端就会返回哈希,然后攻击者可以获取一些口令字符。
msg-id是从MD5碰撞中生成的:如果用户从MD5获得两个碰撞消息 ????@???? x和 iquest; iquest; iquest; iquest;@ iquest; iquest; iquest; iquest; x,且消息长度为两个块,则用户就会将 iquest; iquest; iquest; iquest;@ iquest; iquest; iquest; iquest; 用作msg-id。当客户端使用这两个碰撞消息计算MD5(msg-id||passwd)时,会碰撞第一个口令字符是否为x,无论下一个字符为何值。因此攻击者可以通过这种方式一个一个的猜测出口令字符,但由于计算MD5碰撞的方法,实际上只能恢复出三个字符。