Heartbleedバグ、またはCVE-2014-0160(またはCVE-2014-0346)として知られるセキュリティホールはOpenSSLのバージョン1.0.1から1.0.fにある重大な欠陥でリモートの攻撃者がサーバ上のメモリ上の任意のセクションのダンプを取得できてしまう。そのほかのバージョンのOpenSSLにはこの脆弱性はない。新しくリリースされたバージョンの1.0.1gからはこの問題は解決されている。また、OpenSSHには影響はない。
この脆弱性があるOpenSSLのバージョンは直近の2年間に利用されていた。1.0.1でTLS 1.1と1.2(これ自体がBEAST攻撃への対処だったのだが)が導入されたので、広く普及した。OSXだけが古いバージョンである0.9.8を使っていたので今回の問題に影響を受けていない。影響を受けているのはYahoo! MailやAmazon Web Servicesなどだ。@ivanristicによれば、30%のサーバがTLS 1.2をサポートしており、そのほとんどが今回の脆弱性を抱えている可能性がある。
このバグはheartbeat拡張(RFC 6520)が原因で生まれたため、heartbeatにちなんだ名前が付けられた。OpenSSL 1.0.1に追加された拡張で必要なレンジチェックをしないというバグがあったのだ。heartbeatのプロトコルはサーバへメモリのパケット(64kバイト)を送信し、さらにそれをコピーしてクライアントに送る。送るデータにはペイロード長のヘッダが含まれているが、要求されたのより少ないデータを返すとひとつのリクエストでサーバのメモリ上から64kバイトのデータを読むことができてしまう。
サーバのアロケーションはmallocで確保されたメモリ配列でできているため、機密性が高い可能性の情報がリークしてしまう。メモリのアドレスがリースするとは限らないが、64kバイトもあればURLのセグメントをキャプチャして、平文のパスワードデータを手に入れることも可能だ。また秘密鍵も漏洩する可能性がある。セッションキーなども同様だ。
このバージョンのOpenSSLはすでにパッチが適用されており、ほとんどのLinuxディストリビューションで利用できる。また、セキュリティ更新センター経由でも利用できる。Apache、ngnix、その他OpenSSLを使っているライブラリを利用しているサーバ管理者はセキュリティ更新を行い、影響のあるプロセスを再起動するべきだ。または、サーバを再起動して古いバージョンをメモリから完全に除去するのもいいかもしれない。
また、ユーザもユーザ名/パスワードが破られていないことを確かめ、変更するべきだ。同様に、機密情報を扱う証明書は再作成したほうがいいだろう。