web-dev-qa-db-ja.com

OpenSSLハートビート(ハートブリードバグ)-ペイロードは何に使用されますか?

したがって、ハートビートバグは、実際にペイロードがない(または少ない)ときにペイロードを読み取るため、メモリ読み取りオーバーランを引き起こし、プロセスメモリ(の一部)を公開する可能性があります。

しかし、特にハートビートで何のためにペイロードが必要ですか?

応答にmemcpyされたようです。正確にどのように使用されていますか?

編集
同様の質問、非常に興味深い回答: なぜクライアントがメッセージの長さを提供するのですか?

TildalWaveのコメントに応じて編集

  • この質問は 55116 の重複ではありません。ペイロードの使用目的を尋ねています。もう1つの質問は、エクスプロイトが一般にどのように機能するか(「OpenSSL TLSハートビート(ハートビート)エクスプロイトはどのように正確に機能するか」)であり、「ペイロード」という単語も含まれていません。

  • 明確化-私の質問は少し不明瞭なようです。

    1. ハートビートは通常、他のシステムがまだそこにあるかどうかを確認するために使用されます。これは基本的にはい/いいえの質問です。なぜhuge64 KBがあるのですかサイズ付けされたペイロード(マークはすでにシーケンス番号について言及しています)?
    2. サーバーはペイロードの内容を気にせず、単にそれを応答にコピーします(少なくともハートブリードフィックスの前に、クライアントがペイロードの長さをチェックするのではなく提供することを期待します)。
    3. クライアントはどのようなデータをペイロードに入れますか?数?単語?ランダムな文字列?可能であれば、ソースファイル(できればC)へのリンクを、関連するコード行とともに提供してください。
    4. 誰かが、たとえば8バイトより長いペイロードを必要とするユースケースの例を提供できますか?なぜ8バイトの16進数のシーケンス番号を使用するのが悪い考えでしょうか?
5
basic6

TLSの「ハートビート」機能は、TLS over UDPまたはその他のコネクションレス型プロトコルを対象としています。 「ハートビート」パケットは、サーバーに「まだそこにいますか?」任意のサイズの「ペイロード」フィールドを使用すると、1つのハートビートパケットを別のハートビートパケットに柔軟に伝えることができます。

問題は、この柔軟性がほとんどすべての用途に過剰であることです。単純なシーケンス番号または他の固定サイズのフィールドも同様に機能します。

4
Mark