HeartBleed(CVE-2014-0160)関係のリンク集、自分のメモ用なので不正確です。
HeartBleedの影響対象となるOpenSSLバージョン
以下のバージョンが影響を受けます。但し、システムによっては原因となっているheartbeat機能が無効化されている場合もあるため、バージョンが一致しただけで当該脆弱性の影響を受けるかは確定しません。
(1) OpenSSL 1.0.1系
バージョン名 | リリース時期 | CVE-2014-0160 |
---|---|---|
OpenSSL 1.0.1 | 2012/03/14 | 脆弱性あり |
OpenSSL 1.0.1a | 2012/04/19 | 脆弱性あり |
OpenSSL 1.0.1b | 2012/04/26 | 脆弱性あり |
OpenSSL 1.0.1c | 2012/05/10 | 脆弱性あり |
OpenSSL 1.0.1d | 2013/02/05 | 脆弱性あり |
OpenSSL 1.0.1e | 2013/02/11 | 脆弱性あり |
OpenSSL 1.0.1f | 2014/01/06 | 脆弱性あり |
OpenSSL 1.0.1g | 2014/04/07 | 修正済 |
(2) OpenSSL 1.0.2系
バージョン名 | リリース時期 | CVE-2014-0160 |
---|---|---|
OpenSSL 1.0.2 beta 1 | 2014/02/24 | 脆弱性あり |
OpenSSL 1.0.2 beta 2 | リリースされていない | 修正予定 |
OpenSSLのリリースやリポジトリを見直してみると「OpenSSL 1.0.2 beta」というリリースはないようです。JPCERT/CC他が公開している情報には影響対象に含まれていますが、当該バージョンが存在するのかは不明です。
(3) 影響を受けないバージョン
- OpenSSL 0.9.8系
- OpenSSL 1.0.0系
(4) 1.0.0h→1.0.1でheartbeatが追加
Changes between 1.0.0h and 1.0.1 [14 Mar 2012]
http://git.openssl.org/gitweb/?p=openssl.git;a=blob_plain;f=CHANGES;hb=refs/heads/OpenSSL_1_0_1-stable
:
*) Add support for TLS/DTLS heartbeats.
[Robin Seggelmann]
:
- 2012年1月1日のコミットでCVE-2014-0160を含むHeartbeat機能追加
- Man who introduced serious 'Heartbleed' security flaw denies he inserted it deliberately
- 運悪くHeartBleedを実装してしまったコーダーへのインタビュー記事
- 「わたしは不幸にも見逃した」:壊滅的バグ・Heartbleedを追加した人物へのインタヴュー « WIRED.jp
- ハートブリード、原因は開発者のミス―「OpenSSL」は少数のボランティアに依存 - WSJ.com
(5) CVE-2014-0160の修正箇所
HeartBleed(CVE-2014-0160)って何?って人向けの情報
(1)日本語の情報
- 巷を賑わすHeartbleedの脆弱性とは?! ― Mobage Developers Blog
- CVE-2014-0160 OpenSSL Heartbleed 脆弱性まとめ - めもおきば
- CVE-2014-0160に関連する情報が分かりやすくまとめられている。ディストリビューターの当該脆弱性に関する情報、参照先のリンクあり。
- 「CVE-2014-0160.」の脆弱性の対処について(Debian Wheezy) - labunix's blog
- Debian Wheezyについてコマンドベースの検証・対策手順が整理されている
- Heartbleed攻撃と対策 | yohgaki's blog
- 影響を受けた場合の対策等のまとめ
- [ビデオ]OpenSSLのバグ“Heartbleed”ってどんなの?
- OpenSSL の脆弱性 (Heartbleed Bug) に関する Q&A | WWW WATCH
- HeartBleed関係の情報をまとめているセキュメモの該当トピック
- 影響対象やパッチ情報の記載あり
- チェック方法まとめ:OpenSSLの「Heartbleed」脆弱性は2年前から存在、「最悪のケースを想定して対処を」と専門家 - @IT
- 影響を受ける製品やチェック方法のまとめ
- OpenSSL マジヤバいっす! 〜 Heartbleed 脆弱性を試してみたよ - モラトリアムこじらせた
- デモをやってみたいという方向けの記事
(2) 英語の情報
- OpenSSL Security Advisory [07 Apr 2014]
- OpenSSLのHeartBleedに関するセキュリティアドバイザリ。
- HeartBleed.com
- HeartBleedについて情報がまとめられたサイト
- The Heartbleed Hit List: The Passwords You Need to Change Right Now
- 大手サイトが影響を受けているか、パスワード変更を行うべきかがまとめられたリストを掲載
- InfoSec Handlers Diary Blog - Heartbleed vendor notifications
- ベンダー情報が集積されている
(3) 注意喚起
(4) CVE-2014-0160の原因となったHeartbeat Extension
(5) CVE-2014-0160の影響やリスクに関する考察
(6) 国内主要メディアでも取り上げられ始める
(7) NSAはHeartBleedを事前に把握していた?
Bloombergが4/12付でNSAが今回のHeartBleedを公になる前から把握していたと報じています。
- NSA Said to Have Used Heartbleed Bug, Exposing Consumers - Bloomberg(魚拓) (日本語訳:魚拓)
- NSA、「Heartbleed」脆弱性をデータ収集活動に利用と報じられる--声明で否定 - CNET Japan(魚拓)
NSAは当初コメントを拒否していたようですが、その後Statementを発表し、セキュリティ企業からの報告を受けるまで把握していなかったとして、Bloombergの記事を否定しました。
Statement: NSA was not aware of the recently identified Heartbleed vulnerability until it was made public.
— NSA/CSS (@NSA_PAO) April 11, 2014
CVE-2014-0160での影響が確認された事例
CVE-2014-0160の影響が確認された事例です。いずれも一例であり、脆弱性を持つすべてのサーバーで以下が発生することが確認されたわけではありません。
(1) FreeBSD9.1が稼働するサーバーで秘密鍵が見えた事例
@neelmehta @tqbf @_miw FreeBSD 9.1 #heartbleed pic.twitter.com/AktnQD3E7w
— Tomas Rzepka (@1njected) April 9, 2014
(2) Yahoo.comで他人のメールアドレスやパスワードが見えた事例
Do not login to Yahoo! The OpenSSL bug #heartbleed allows extraction of usernames and plain passwords! pic.twitter.com/OuF3FM10GP
— Mark Loman (@markloman) April 8, 2014
FOXITの検証を見ると秘密鍵も漏れていた模様
(3) JIRAでHTTPリクエストが漏えいし、セッションハイジャックが出来た事例
(4) nginx 1.5.13で秘密鍵が取得できた事例
Cloudflareが「www.cloudflarechallenge.com」から証明書秘密鍵を取ることが出来るかといったHeartBleedの脆弱性評価コンテストを開催し実際にデータを取ることが出来たと報告が行われました。
少なくとも 2人成功。1人は約250万回の試行、もう1人は約10万回の試行で成功したようです。サーバの環境は "nginx-1.5.13 linked against OpenSSL 1.0.1.f on Ubuntu 13.10 x86_64" とのこと。
— Masafumi Negishi (@MasafumiNegishi) April 12, 2014
その後さらに2人増えて、これまでに合計 4人が秘密鍵の取得に成功。
Heartbleed Challenge https://t.co/I90ZPsW3D8
— Masafumi Negishi (@MasafumiNegishi) April 13, 2014
あ、Tweet 見るとそのあとさらに 2人いるな。
— Masafumi Negishi (@MasafumiNegishi) April 13, 2014
- 「/etc/shadowも抜けた」はデマでした*1
“@Viss: hey @cloudflare, do I get any credit for finding /etc/passwd contents just now? :D :D :D pic.twitter.com/5Qg0ET7Jd9” ahahaha! :)
— Fedor Indutny (@indutny) April 12, 2014
↓awww boooo :( - I'm told the /etc/shadow contents I'm seeing are fake and were inserted into memory by someone posting to the form.
— Dan Tentler (@Viss) April 12, 2014
(5) カナダ 歳入庁でデータ侵害の被害が出た事例
- Statement by the Commissioner of the Canada Revenue Agency on the Heartbleed bug
- HeartBleedを悪用されて納税者のデータ約900人分が削除された模様。
- HeartBleedがどのように悪用されたのかの説明はない。
- OpenSSLの“Heartbleed”脆弱性による被害が発生、カナダ歳入庁が発表 -INTERNET Watch
(6) イギリス 育児サイト Mumsnetでデータ侵害の被害が出た事例
- The Heartbleed security breed - and what to do
- HeartBleedが悪用され、不正にログインされ情報が閲覧された可能性がある。
- どのユーザーが影響を受けたのか確認する方法がないと報告。
- HeartBleedの影響によりパスワードリセットが全ユーザーに実行される事例はMumsnetが初めてと思われる。
- 「ハートブリード」バグで150万人情報流出か 英育児サイト国際ニュース:AFPBB News(魚拓)
CVE-2014-0160のScan結果を公開、まとめているところ
CVE-2014-0160を確認した数 | 確認元 | 確認日時 | ソース |
---|---|---|---|
61万5268サイト (2858万1134サイトで検証) |
Robert Graham | 不明 Twitter投稿は2014/04/09 8:17 UTC |
■ |
約50万サイト | Netcraft | 2014年4月調査 | ■ |
489サイト Alexa Top10000より |
James Vasile | 2014/04/09 11:30 UTC?頃 | ■ |
5サイト Alexa Top100より |
musalbas | 2014/04/08 11:30 UTC | ■ |
48サイト Alexa Top1000より |
musalbas | 2014/04/08 12:00 UTC | ■ |
630サイト Alexa Top10000より |
musalbas | 2014/04/08 16:00 UTC UTC | ■ |
3万1312サイト Alexa Top1millionより |
zmap | 2014/04/10 14:00 EDT | ■ |
約5万サイト Alexa Top1millionより |
TrendMicro | 2014/04/10 10:18 PDT | ■ |
150サイト 国内3500図書館サイトより |
カーリル | 2014/04/09 16:00 JST | ■ |
1045ノード 約5000のTorExitNode |
MUlliNER.ORG | 2014/04/11〜13 | ■ |
musalbasさん調査の3つはログイン用ドメインが別に用意されている等、サブドメインまではチェックしてないリストです。
HeartBleed(CVE-2014-0160)で攻撃してもばれないのか
- アクセスログ、システムログ上からは攻撃トラフィックか判断することが出来ない。
- 目当ての情報を引き出そうと大量にアクセスを試行すればアノマリーなトラフィックとして攻撃と疑われる可能性はある。
- IDS/IPSでHeartBleed対応が行われ始めたので、導入サイトへ対して行えば分かる。
Heartbleed脆弱性を利用して認証機能で保護されたシステムのメモリから情報を読み出すのはそれ自体でアクセス制御機能の回避にあたり、無断で外部のサーバに対して検証を行えば不正アクセス禁止法に抵触するというのが一応の結論で、別に端から捕まりはしないけどやらないに越したことはない
— nolze (@nolze) April 10, 2014
(1) nginxはパッチ後にログが出力されるようになる
nginx, after being patched, logs the following from the PoC exploit:
2014/04/08 12:37:18 [info] 4151#0: *724561 peer closed connection in SSL handshake while SSL handshaking, client: 70.91.145.11, server: 0.0.0.0:8443
https://isc.sans.edu/diary/%2A+Patch+Now%3A+OpenSSL+%22Heartbleed%22+Vulnerability/17921
nginx 1.4.7でエラーログ(/var/log/nginx/error.log)に出力されることをUbuntu13.10で確認しました。但しログレベルをinfoにしなければ出力されません。
(2) iptablesを使った検知方法
デロイトトーマツの岩井さんがiptablesを使った検知(遮断)方法を紹介しています。以下その方法を引用します。
iptables log rules
http://blog.f-secure.jp/archives/50725604.html
iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j LOG --log-prefix "BLOCKED: HEARTBEAT"
iptables block rules
iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP
この方法は根本的な対策ではないと岩井さんがコメントしている通り、yasulibさんもこのルールの回避方法を検証しています。
いくつか回避する方法があると思います。例えばTCPヘッダのOptionsヘッダにNOPを入れることでオフセットをずらすなど。
他にもSSLには一つのパケットの中に複数のContentを入れることができます。
よく見るのはServer Helo, Certificate, Server Key Exchange, Server Hello Doneが1つのパケットにまとまっていることなどです。
この仕様を使っても、フィルタを回避できます。
(3) IDS/IPSのHeartBleed対応状況
ベンダ | 対応状況 | 製品名 | 検知シグネチャ | |
---|---|---|---|---|
IBM | 2014/04/09対応済 | Network Protection XGS Proventia Network IDS Proventia Network IPS Proventia Network MFS Proventia Server (Linux) RealSecure Network RealSecure Server Sensor Proventia Desktop Proventia Server IPS (Windows) |
TLS_Heartbeat_Short_Request (既定で遮断) TLS_Heartbeat_Long_Response |
|
McAfee | 2014/04/09対応済 | McAfee Network Security Platform | UDS-SSL: OpenSSL TLS DTLS Heartbeat Extension Packets Information Disclosure | |
Cisco | 2014/04/09対応済 | Cisco Intrusion Prevention System | OpenSSL Information Disclosure | |
Juniper Networks | 2014/04/09対応済 | IDP | HIGH SSL:OPENSSL-TLS-DTLS-HEARTBEAT SSL: OpenSSL TLS DTLS Heartbeat Information Disclosure | |
SecureSoft | 2014/04/11対応済 | SniperIPS | OpenSSL TLS Heartbeat Extension Memory Disclosure.C OpenSSL TLS Heartbeat Extension Memory Disclosure.B OpenSSL TLS Heartbeat Extension Memory Disclosure.A OpenSSL TLS Heartbeat Extension Memory Disclosure |
|
Suricata | 対応準備中 | Suricata | 2.0.1にて対応予定 | |
HP | 対応済? | TippingPoint IPS | 2014/04/08時点で準備中とのツイートあり | |
Snort(SourceFire) | 2014/04/08対応済 | Snort | Snort Version 2960 Snort Version 2956 Snort Version 2946 |
|
TrendMicro | 2014/04/08対応済 | TrendMicro DeepSecurity | DSRU-14-009 1006010 – Restrict OpenSSL TLS/DTLS Heartbeat Request 1006011 – OpenSSL TLS/DTLS Heartbeat Information Disclosure Vulnerability 1006012 – Identified Suspicious OpenSSL TLS/DTLS Heartbeat Request |
|
Paloalto Networks | 2014/04/09対応済 | PAシリーズ | ID 36416にて対応済 | |
Arbor Networks | 2014/04/11対応済 | Pravail Security Analytics | 2018375 ET CURRENT_EVENTS TLS HeartBeat Request (Server Intiated) 2018376 ET CURRENT_EVENTS TLS HeartBeat Request (Client Intiated) 2018377 ET CURRENT_EVENTS Possible OpenSSL HeartBleed Large HeartBeat Response (Client Init Vuln Server) 2018378 ET CURRENT_EVENTS Possible OpenSSL HeartBleed Large HeartBeat Response (Server Init Vuln Client) |
|
Symantec | 日付不明対応済 | Symantec IPS | 27517「Attack: OpenSSL Heartbleed CVE-2014-0160 3」 |
CVE-2014-0160の確認方法
(1) OpenSSLコマンドを使った確認方法
- opensslコマンドを使ってサーバー内で確認する場合
$openssl version -a
出力結果に影響を受けるバージョンであること、無効化オプション(-DOPENSSL_NO_HEARTBEATS)が指定されていないこと、の2つが確認できた場合、脆弱性が存在する可能性が高いです。
- opensslコマンドを使ってリモートからheartbeatが有効となっているか確認する場合
$echo | openssl s_client -connect host:port -tlsextdebug
と入力して「TLS server extention "heartbeat"」と出力されるとheartbeat機能が有効となっていることが分かります。ただし、脆弱性が存在するかは分かりません。
(2) オンラインスキャナーでの確認方法
方法といっても基本的にはURLを入れるだけです。インターネットに公開されたWebサーバーや自分自身に対してオンラインスキャナーを使ってCVE-2014-0160の影響を受けるか確認することが可能です。
オンラインスキャナー | 提供元 | 検査対象 | 言語 | CVE-2014-0160のチェック方法 | 証明書の確認 | ログの記録 |
---|---|---|---|---|---|---|
SSLチェックツール | Globalsign | 公開Webサーバー | 日本語 | Qualysのチェックサービスを利用 | 有り | 有り |
Heartbleed脆弱性検査 | NetAgent | 公開Webサーバー | 日本語 | CVE-2014-0160のExploitを実行して脆弱性の有無を確認している模様 | 無し | 無し |
SSL Labs Server Test | Qualys | 公開Webサーバー | 英語 | 不明 | 有り | 有り |
LastPass Heartbleed checker | LastPass | 公開Webサーバー | 英語 | Webサーバーの種類からOpenSSLを推測 | 有り | 不明 |
heartbleed test | possiblelv | 公開Webサーバー | 英語 | SSLのパケットからheartbeat機能の利用有無を確認 | 無し | 不明 |
Heartbleed test | Filippo Valsorda | 公開Webサーバー | 英語 | CVE-2014-0160のExploitを実行して脆弱性の有無を確認 | 無し | 有り |
Check your certificate installation | Symantec | 公開Webサーバー | 英語 | 不明 | 有り | 不明 |
Reverse Heartbleed Tester | Meldium | 接続クライアント | 英語 | 不明 | 無し | 無し |
heartbleedtest | McAfee | 公開Webサーバー | 英語 | 不明 | 無し | 不明 |
FREE HeartBleed Tester | Crytical Watch | 公開Webサーバー | 英語 | 不明 | 無し | 不明 |
COMODO SSL Analyzer | COMODO | 公開Webサーバー | 英語 | 不明 | 無し | 不明 |
rend Micro Heartbleed Detector | TrendMicro | 公開Webサーバー | 英語 | 不明 | 無し | 不明 |
脆弱性が存在するサイトをオンラインスキャナーにかけてみると次のように表示されます。
- SSLチェックツール(Globalsign)
- Heartbleed脆弱性検査(NetAgent)
- SSL Labs Server Test(Qualys)
- heartbleed test(possiblelv)
- Heartbleed test(Filippo Valsorda)
- FREE HeartBleed Tester(Crytical Watch)
(3) Github/CodePlex上で公開されているCVE-2014-0160の確認ツール
公開されているツールの多くはjspenguinさんのPoCを使用しています。
CVE-2014-0160検証ツール | 開発者 | 検査対象 | 実装言語 | 特記事項 | piyokango検証 |
---|---|---|---|---|---|
ssltest.py | @jspenguin | Webサーバー | python | CSV(番号,ホストのフォーマット)を指定して一括チェック可能 | 検証済 |
heartbleed | @FiloSottile | Webサーバー | go | 未検証 | |
docker-heartbleed | kasimon | Webサーバー | docter | 未検証 | |
hb-test.py | takeshixx | Webサーバー | python2 | ssltest.pyがベース | 検証済 |
hb-test.py | dyatlov | Webサーバー | python3 | ssltest.pyがベース | 未検証 |
Bleed Out | John Leich | Webサーバー | Windows/C# | 既定動作でExploitを実行し続ける。 .NetFramework 4/4.5が必要。 |
検証済 |
bleed_heart.bat | partp | cmd.exe | Webサーバー | pythonで実装されたExploitをバッチ実行する | 未検証 |
openmagic | isgroup-srl | サーバー | bash | HTTPS以外のサービスに対して検証を行う | 未検証 |
ssltest-stls.py | Derek Callaway | サーバー | python | SMTPやIMAP等の様々なプロトコルに対応させたssltest.py | 未検証 |
pacemaker | Lekensteyn | 接続クライアント | python | 自身を検査できる。ssltest.pyがベース | 未検証 |
Hut3 Cardiac Arrest | ah8r | サーバー | python2.7 | HeartBleedのPoCに存在する3つのバグを修正したツール | 検証済 |
脆弱性が存在するサイトでhb-test.pyを動かしてみた結果です。脆弱性の存在が確認できるとメモリを表示した後に次のような表示が出ます。
尚、jspenguinさんのPoCには次のバグが存在しHeartBleed脆弱性検出の見落としが発生する可能性が指摘されています。上記のGithubツールだけでなく、NSEやNessusにも影響が及ぶようです。そのため、この指摘をしたhut3チームが公開している「Hut3 Cardiac Arrest」が確認ツールとしては良さげと思います。
バグ1:TLS Version Support
http://www.pupha.net/archives/1876/
検知スクリプトでは TLSv1.1が指定されているが、これ以外(TLSv1.0やTLSv1.2)しか
サポートしていないサーバだと、このH eartbeatリクエストを捨ててしまう。
リクエストが捨てられてしまった場合、検知スクリプトでは脆弱性なしと判定している。
バグ2:TLS Cipher Suite Support
現在318種類のCipher suite がIANAによって登録されている。
多くの検知スクリプトでは51種類しか使用していなかった。
それをサポートしていないサーバは、このリクエストを捨ててしまう。
リクエストが捨てられてしまった場合、検知スクリプトでは脆弱性なしと判定している。
クライアントが実際にその318種類に対応している必要はない。脆弱性を引き起こすのは、暗号化が起きる前なので。
バグ3:Payload Detection
レスポンスを受け取るまでに5秒以上かかると、脆弱性なしと判定している。
というわけで「Hut3 Cardiac Arrest」を実行した結果です。脆弱性が存在すると次の通り出力されます。
脆弱性が存在しない場合は次の通り出力されます。SSLv3だけでなく、TLSも総じてチェックされます。
(4) 自分が利用しているAndroidが影響を受けるか検証するツール
HeartBleed関連でいくつかアプリが出ています。他のスキャナーと違って、自分自身(AndroidOS、アプリ)にインストールされているOpenSSLがCVE-2014-0160の影響を受けないか確認するためのアプリです。偽チェックツールも出回るかもしれないので利用前には十分な注意が必要です。また影響対象のOpenSSLがインストールされたAndroidのバージョンは4.1.1〜4.4.2_r2ですが、HeartBeat機能が有効となっているのは4.1.1のみのため、4.1.1のみCVE-2014-0160の影響を受けます。*2
開発元 | アプリ名 | 必要な権限 |
---|---|---|
Lookout Mobile Security | Heartbleed Detecter | インターネットへの接続 |
BlueBox | Heartbleed Scanner | 特に無し |
2社の関連情報も掲載しておきます
(5) Nessusでの確認方法
(6) NMAP Script Engineでの確認方法
- ssl-heartbleed
- 手元のWindows7環境ではうまく動作しませんでした。Ubuntu13.10(NMAP6.40)で動作確認済。
- HeartBleedチェック用のNSEをダウンロードする。
$sudo wget https://svn.nmap.org/nmap/scripts/ssl-heartbleed.nse -P /usr/share/nmap/scripts
- Scriptダウンロード後以下のコマンドを実行するのみ。
脆弱性が存在するサイトに対してNSEを実行すると次のように表示されます。脆弱性が存在しなければ何も表示されないようです。
- tlsがないと言われたらこちらもダウンロードする。
$sudo wget https://svn.nmap.org/nmap/nselib/tls.lua -P /usr/share/nmap/nselib
(7) Metasploitでの確認方法
OpenSSLを利用しているソフトウェア、オンラインサービスの影響範囲
量が増えてメンテナンスが大変になってきてしまったため、別ページとしました。