ソフトウエアには脆弱性が存在します。これは受け入れなければならない現実です。しかし、真面目で運が良ければ、サイバー犯罪者が脆弱性を利用する前に更新プログラムを適用することができます。しかし、すべての事例がそうであるとは限りません。例外もありますが、幸いなことにそうしたものは異例と言えるでしょう。
しかし、2014年4月7日(米国時間)、「OpenSSL」の拡張機能「Heartbeat」に脆弱性が存在することが発覚しました。OpenSSL は、Webサイトの統括者や開発者がトランザクションをより安全に行うためのオープンソースのツールキットです。万が一この脆弱性が利用されると、OpenSSL を利用している Webサイトやアプリケーション上の多くの情報が漏えいしていることを意味します。しかし、この脆弱性の性質上、サイバー犯罪者がこの脆弱性を利用したかどうかを知る方法がありません。
■「OpenSSL」の拡張機能「Heartbeat」とは
OpenSSL は、2011年12月頃に Heartbeat と呼ばれる拡張機能を導入し、「RFC 6520 TLS/DTLS Heartbeat拡張」で定義された 1.0.1バージョンを公開しました。この拡張機能は、セッションの再構築を避け、SSL のセッションをより長く保持することができます。RFC では、「HeartbeatRequest」は「HeartbeatResponse」のメッセージが返される必要があるとしています。その結果、ネットワークリソース間の既存の接続は保持されます。リソースは通常フルセッションの再交渉に利用されます。
留意すべきなのは、OpenSSL は多くの Webサイトやソフトウエアで利用されていることです。「Apache」や「nginx」などのオープンソースのサーバから、Eメールサーバやチャットサーバ、仮想プライベートネットワーク(VPN)、またはネットワークアプライアンスまで幅広く利用されています。
このように、Heartbeat拡張はとても幅広く利用されているため、この脆弱性の影響が広範囲に広がると推測しても不思議はありません。
■OpenSSL に存在する脆弱性「Heartbleed」とは
「Heartbleed」と名付けられたこの脆弱性は、Heartbeat拡張を利用するすべての OpenSSL実装に存在します。脆弱性を抱えるサーバが攻撃を受けると、攻撃者は、痕跡をまったく残さず、PC のメモリから一度に 64KB までの情報を読み出すことが可能になります。
メモリ内のこの少量の情報の中に、ユーザの重要な個人情報が含まれている可能性があります。例えば、秘密鍵や、ユーザ名、パスワード(多くの場合、暗号化されていない)、クレジットカード情報、また機密書類などです。また、攻撃者はできるだけ多くの情報を得るために、何度も情報を収集する可能性があります。そしてこの脆弱性は、インターネット上の誰でも、どこからでも利用できるのです。
ある主要なインターネット・コンテンツ・プロバイダーも、この脆弱性による影響を受けていました。その企業は、迅速に更新しましたが、更新されたのは、悪意を持った人物がすでに重要な情報を収集した後でした。
基本的に、Heartbleed は単純で一般的なプログラミングのエラーですが、セキュリティ上の問題を引き起こす恐れがあります。簡単に言うと、この脆弱性は、どれだけ読み出して返したかを確認することなく、メモリ上のコンテンツを返します。
このように、Heartbleed の脆弱性を利用することで、情報をより多く取得しようとした場合、情報を閲覧する権限が実際にあるかどうかを確認することなく、情報を求めたユーザにメモリの情報を渡します。図1 は、サーバを不正に操作して、メモリの情報を入手するために利用されたペイロード長の記述です。
この脆弱性は、「CVE-2014-0160」に割り当てられました。
コード上のバグを利用したこの攻撃は、まったく痕跡を残さないため、この脆弱性を利用した攻撃が実際に行なわれているかどうかは、はっきりわかりません。トレンドマイクロは、本脆弱性を監視していきます。
■影響を受ける OpenSSL のバージョンと確認方法
OpenSSL のアドバイザリによると、以下のバージョンが影響を受けます。
- OpenSSL 1.0.1 から 1.0.1f
- OpenSSL 1.0.2-beta から 1.0.2-beta1
上記以外の OpenSSL のバージョンは本脆弱性の影響を受けません。上記のいずれかのバージョンでアプリケーションをコンパイルしていた場合は、影響を受ける可能性があります。
またユーザは、サーバが Heartbleed の影響を受けるかどうかを、以下の Webサイトで確認することができます。
また、修正済みバージョン 1.0.1g は、2014年4月7日(米国時間)に公開されています。
■どのような対策を取るべきか
- Webサイト運営者向け対策
Heartbleed の影響を受けるサイトは、OpenSSL のバージョン 1.0.1g にアップグレードして下さい。この修正済みバージョンを適用できない場合は、Heartbeat拡張を無効にし、「DOPENSSL_NO_HEARTBEATS」を有効にした上で、アプリケーションを再コンパイルして下さい。
また、SSL証明書の失効と、新しい鍵ペアを用いて発行した新証明書との置換も必要です。脆弱性の影響を受ける OpenSSL のバージョンで証明書が発行されている場合、秘密鍵が漏えいする可能性があります。どの証明書が影響を受けるかを知る手段がないため、新しい鍵ペアを生成し、SSL証明書を発行し直す必要があります。秘密鍵を交換することが目的ですので、証明書の再発行の際には、本脆弱性対応以前の鍵ペアから生成した CSR を使いまわさないように十分に留意してください。
- 一般のインターネット利用者向け対策
Heartbleed の脆弱性は、ユーザ名やパスワードなどの重要な情報を漏えいさせる恐れがあるため、一般のユーザは、ご利用のサイトが脆弱性の影響を受けないことを確認した上で、オンラインアカウントのパスワードを変更することを検討して下さい。また、特に金銭に関係するアカウントに関しては、不審な動きがないかを監視して下さい。Webサイト運営者側の対策として、OpenSSL をアップグレードしたうえで、「SSL証明書の失効と新証明書との置換」も行うべきと広く訴えられています。この対策の効果を正しく得るために、今一度、普段からお使いのブラウザが SSL証明書の失効検証を行っているかどうか、設定を確かめてください。万が一Webサイト側からの秘密鍵の漏えいがあった場合に、その秘密鍵を入手した攻撃者は他の攻撃手法と組み合わせ、そのWebサイトになりすますことが可能になります。利用者側のブラウザで SSL証明書の失効検証を行うことで、Webサイト運営者側が証明書を失効していれば、上記のリスクから身を守ることができます。特に Chrome の現在のバージョンでは、デフォルトではこの機能が有効になっていないので注意が必要です。ブラウザごとに、以下の部分で確認ができます
。- Internet Explorer:ツール>インターネットオプション>詳細設定>セキュリティ>「サーバーの証明書失効を確認する」にチェックが入っていること
- Chrome:設定>詳細設定を表示…>HTTPS/SSL>「サーバー証明書の取り消しを確認する」にチェックが入っていること
※デフォルトではチェックなしになっていますので、チェックを入れてください。
- モバイルアプリを含むアプリケーション開発者向け対策
一般のインターネット利用者が取るべき対策と同じく、Webサイト側からの秘密鍵の漏えいがあった場合に備えるべきです。なりすましからアプリユーザーの身を守るために、通常通り HTTPS通信の相手先の SSL証明書が信頼された認証局から発行されているかどうかを正しく検証したうえで、SSL証明書の失効検証も行ってください。失効されていた場合は、接続先が正しくないと考えて以降の通信を行わないようアプリケーションを制御することが望ましいです。
■トレンドマイクロの対策
トレンドマイクロのサーバ向け総合セキュリティ製品「Trend Micro Deep Security(トレンドマイクロ ディープセキュリティ)」をご利用のユーザは、「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
参考記事:
by Pawan Kinger (Vulnerability Research Manager)
【更新情報】
2014/04/15 | 11:10 |
|
翻訳:品川 暁子(Core Technology Marketing, TrendLabs)