0

我对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的代码是否仍然存在漏洞?

4

1 回答 1

1

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

于 2014-04-22T04:25:53.953 回答