Заполнение о OpenSSL Heartbleed

Я что-то не понимаю насчет заполнения сердцебиения в 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 ответ

1 + 2 + payload + 16 минимальная длина сообщения; оно может быть меньше соответствующей длины сообщения, но не может быть больше. Таким образом, тест говорит, что если это вычисленное значение больше, чем фактическая длина сообщения, что не согласуется с правильно построенным сердцебиением, сообщение следует отбросить, предотвращая ошибку.

Другие вопросы по тегам