CVE-2014-0160
読み:スィーヴィーイー-にーゼロいちよん-ゼロいちろくゼロ
外語:CVE-2014-0160

 OpenSSLに存在した脆弱性の一つ。Heartbleed脆弱性。
目次

概要
 MITRE社の脆弱性情報データベースCommon Vulnerabilities and Exposures(CVE)に登録されている脆弱性の一つ。
 これは、OpenSSLの欠陥により、本来秘匿すべき情報(暗号通信の内容、秘密鍵など)が漏洩する可能性がある、極めて重大なセキュリティホールである。
 1.0.1gおよび1.0.2-beta2にて修正された。

特徴

問題

原因
 TLS heartbeat拡張(RFC 6520)の処理で境界検査が不足していた。
 この脆弱性が悪用されると、読み込みでオーバーランを発生させ、OpenSSLが使用している保護されたシステムメモリーの内容を誰でも閲覧することができた。このため理論的にはメモリー上にある暗号通信や秘密鍵などを盗聴することが可能だった。
 heartbeat(心拍)の実装による情報漏洩バグであったため、本件はHeartbleed(心臓出血)と命名された。

影響
 このバグは気付かれず、または気が付かれてはいたがそのまま放置されていたようだが、2年以上経ってから修正された。
 この問題が報告されてからネット界隈はパニックに陥ったが、比較的簡単な対応で修正できたため、パニックは数日間で収まった。なお、この2年以上の間にどれだけの情報が漏洩していたのかは定かではない。
 例えば、アメリカの通信社Bloombergは、米国家安全保障局(NSA)は少なくとも2年前からHeartbleedの脆弱性を認識しており情報収集に利用してきた、と報道して大きな騒ぎになったが、NSAはこれを否定する声明文を発表している。
 OpenSSLはAndroidでも使われているが、Androidの場合はAndroid 4.1.1のみが影響するとしている(端末メーカーが不具合のあるOpenSSLバージョンに置き換えていない場合に限る)。

修正
 境界チェック処理を追加した。短すぎる場合と、長すぎる場合(今回の問題)とで、チェックをするようにしている。修正は「Add heartbeat extension bounds check.」と題されている。そもそも無かったbounds checkを追加した、ということが良く分かる題名である。
 RFC 6520のセクション4において、「受信HeartbeatMessageのpayload_lengthが大きすぎる場合は、受信HeartbeatMessageは黙って破棄しなければならない(MUST)」とあり、今回の修正では、RFC通りに黙って破棄するように修正されている。
 RFC通りに実装されていなかったことが問題となったもようである。

その後
 このバグは世界が震撼させたが、頻発するOpenSSLの不具合調査をしたThe OpenBSD Projectは、抜本的な改善が必須との結論に至った。
 OpenSSLでの抜本的な修正は困難だったため、ここからLibreSSLとして分岐され、抜本的な修正と改良が開始された。
 この不具合を契機として、今後の主流はOpenSSLからLibreSSLへと移っていくものと予想される。

再検索