OpenSSLの脆弱性「HeartBleed」「CVE-2014-0160」の概要と原因について記載する。
TLSのHeartBeat機能の処理に問題があり、メモリ情報漏えいの危険性がある。
HeartBeatとは、サーバとクライアント間でヘルスチェックを行う機能であり、以下のように行われる。
1.クランアントから、サーバにハートビートメッセージを送る。
2.サーバはバッファ領域にpayload_lengh分のデータを保存する。
3.サーバからクライアントにハートビートを返すときに、バッファ領域のpayload_lengh分のデータを
ハートビートメッセージ内のpayloadバッファにコピーして返す。
原因
クライアントから送るpayload_lenghが、payloadバッファより大きいサイズである場合に、
本来のpayloadのためのバッファ領域を超えて、別のランダムなメモリ領域をコピーして送ってしまい、データ漏洩につながる。
★クライアントから要求された分のメモリ領域をあげようとしてしまう。
対策
payload_lenghの長さをチェックするようなコードが必要