关于OpenSSL的填充心脏

时间:2014-04-22 02:46:59

标签: ssl openssl heartbleed-bug

我对openSSL中心跳的填充部分有所了解。 在openssl 1.0.1g的代码中,它显示如下:

n2s(p, payload);
if (1 + 2 + payload + 16 > s->s3->rrec.length)
    return 0; /* silently discard per RFC 6520 sec. 4 */
pl = p;

它表明填充的长度是16,但在RFC6520中,它表示填充长度至少为16个字节。然后,如果客户端发送带有填充(32字节或更大)的心跳,OpenSSL的代码是否仍然存在漏洞?

1 个答案:

答案 0 :(得分:1)

1 + 2 + payload + 16是最小消息长度;它可能小于相应的消息长度,但它不能更大。因此,测试表明,如果该计算值大于实际消息长度(与构造良好的心跳不一致),则应丢弃该消息,以防止该错误。