关于OpenSSL heartbleed

关于OpenSSL heartbleed,ssl,openssl,heartbleed-bug,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中心跳信号的填充部分。 在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+2+负载+16
是最小消息长度;它可能小于相应的消息长度,但不能大于。因此,测试表明,如果计算的值大于实际消息长度,这与构造良好的心跳不一致,则应丢弃消息,以防止出现错误。

谢谢,我看到了。当我们发送心跳信号时, 我可以看到assert“OPENSSL\u assert(len@ceKing)
HeartBeatRequest
消息有一个字段
uint16有效负载长度
。因此心跳消息不能大于2^16或
SSL3\u RT\u MAX\u PLAIN\u长度
。有一种情况表明心跳消息不能大于2^14,但我不熟悉这种情况。