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 に答える