「Heartbleed」脅威と対策 第 1.0 版 「Heartbleed」の脅威と対策 1.0 版:2014/4/30 有限会社ベルウクリエイティブ ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 目次 1. はじめに ............................................................................................... 2 2. 概要 .................................................................................................. 2 2.1. 3. 4. 5. 「Heartbleed」とは............................................................................. 2 技術情報............................................................................................. 3 3.1. CVE 情報 ...................................................................................... 3 3.2. 確認方法 ....................................................................................... 3 3.3. 影響を受けるバージョン ......................................................................... 4 3.4. 攻撃手法と脆弱性の原因 ..................................................................... 4 3.5. 影響を受けるバージョン Windows 環境においての影響 ..................................... 7 対策方法............................................................................................. 7 4.1. サーバ側の対策 ................................................................................. 7 4.2. クライアント側(ユーザ側)の対策................................................................ 8 4.3. その他システムの影響 .......................................................................... 8 巻末付録............................................................................................. 9 1 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 1. はじめに 本書は OpenSSL に発見された脆弱性「Heartbleed」(CVE-2014-0160)に関する説明、影 響、及びその対策などを記しました。 OpenSSL の脆弱性「Heartbleed」は、金融機関や政府サイトなどで被害を受けました。多くの企業 でサイトやシステムへの攻撃による情報漏えいによる脅威に晒されてしまい、その脆弱性の対応に追われ ていると思われます。 弊社では、本書がこの脆弱性の対策の一助になれば幸いです。 2. 概要 2.1. 「Heartbleed」とは Heartbleed とは暗号化通信ソフトウェア OpenSSL に発見された脆弱性の俗称であり、TLS の拡張 機能である Heartbeat のメモリ管理の不備により、攻撃者にメモリ内の秘密鍵やクレジットカード番号な どの機密情報が平文で漏洩するもので、Heartbeat になぞられ Heartbleed(心臓出血)と呼ばれてい ます。 本脆弱性は約 2 年前から存在しており、脆弱性のあるバージョンの OpenSSL を利用しているシステム が広く身近に存在(例えば、ウェブサイト、メール、データベースなど)しているため、非常に影響する範囲 の広い脆弱性です。 ソフトウェア名から SSL プロトコルそのものの脆弱性と誤認されがちですが、ソフトウェア上の実装に起因 する脆弱性のため SSL/TLS プロトコル自体には問題はありません。また前述の通り、TLS の実装部分の 問題であるため SSL 通信においても影響を受けます。 Heartbleed は OpenSSL の Heartbeat 実装コードの不備をついた攻撃ですが、TLS に於いての Heartbeat はデータの送受信を行わなくても定期的に Heartbeat 信号を送ることによりセッションを維 持することを目的とした SSL/TLS 専用の死活監視機能です。 しかし、TCP 通信には Heartbeat に相当する keep-alive が広く一般的に使われているため、TLS の Heartbeat は事実上ほとんど使われていません。そのため今回の Heartbeat のバグの発見が遅れた とされています。 Heartbeat(ハートビート) Heartbeat は、各ノードの死活監視を行うことができ、ネットワーク上にあるネットワーク機器やサーバ自 身が正常に稼働していることを外部に伝え、ハードウェア/ソフトウェアの障害(NIC 故障, Kernel Panic 等)を検出することができ、主に高可用性クラスタリングシステムの構築に於いて採用されているソフトウェ アです。 2 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 3. 技術情報 3.1. CVE 情報 CVE-ID: CVE-2014-0160 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160 3.2. 確認方法 確実な確認方法は、実際に攻撃しメモリ情報が漏洩しているか確認することです。脆弱性を受ける OpenSSL のバージョンを使用していても、コンパイル時オプションによっては Heartbleed の影響を受けな い場合あるため、バージョン情報の確認だけでは判断ができません。 外部サービスによる確認 下記の Web サイトでドメイン名とポート番号を指定し脆弱性の有無及び、修正されているか確認 することが可能です。 Test your server for Heartbleed (CVE-2014-0160) https://filippo.io/Heartbleed/ 検査ツールによる確認 GitHub 上に有志の方々が確認ツールを公開しています。 https://github.com/slowpoison/Heartbleed 自サイト以外への「Heartbleed」の確認は行わないで下さい。この行為は攻撃との見方もできるため、 自サイトの管理配下の対象システムでの確認に利用して下さい。 3 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 3.3. 影響を受けるバージョン Heartbleed の影響を受けるバージョンは下記の通りです。 バージョン 脆弱性の有無 1.0.1 脆弱性あり 1.0.1a 脆弱性あり 1.0.1b 脆弱性あり 1.0.1c 脆弱性あり 1.0.1d 脆弱性あり 1.0.1e 脆弱性あり 1.0.1f 脆弱性あり 1.0.2 beta 脆弱性あり 1.0.2 beta 1 脆弱性あり また、各パッケージにより修正済みのバージョン表記が異なります。 RHEL6.5 では openssl-1.0.1e-16.el6_5.7 が修正済みのバージョンで、脆弱性を受ける 1.0.1e のバージョンですが修正済みのバージョン表記となっております。 詳細は各パッケージ・Linux ディストリビューションのサポートページを参照してください。 3.4. 攻撃手法と脆弱性の原因 Heartbeat Request を送り、payload_length フィールドに巨大な値をセットすることにより、最大 65530 バイトの隣接するメモリ情報を抜き出すことにより、機密情報を盗み取られる可能性のある脆弱 性です。下記のような実装をしているため引き起こります。 問題のある ssl/d1_both.c のソースコード 1457: unsigned char *p = &s->s3->rrec.data[0], *pl; 1458: unsigned short hbtype; 1459: unsigned int payload; 1460: unsigned int padding = 16; /* Use minimum padding */ ……省略…… 1484: /* Enter response type, length and copy payload */ 1485: *bp++ = TLS1_HB_RESPONSE; 1486: s2n(payload, bp); 1487: memcpy(bp, pl, payload); Heartbeat Request を受信すると rrec.data[0]というバッファにリクエストメッセージを格納します。 4 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 フィールドは、hbtype(1byte), payload_length(2byte), payload(payload_length byte)、 padding(16byte)です。 ここで payload_length フィールドを 65535 バイトセットします。レスポンスメッセージ作成の処理内でメ モリをコピーする memcpy()内部関数を利用して、pl ポインタから 65535 バイト読み込み payload フ ィールドにコピーします。pl ポインタは”hello”の 5 バイトのため、隣接する 65530 バイト分のメモリ情報を コピーしレスポンスを返すため、機密情報が漏洩する可能性を引き起こします。 5 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 情報漏洩を引き起こすメモリ管理図の例です。 Heartbeat Request 65535 Hello リクエスト -> ->コピー クレジットカード番号 ID とパスワード情報 秘密鍵 65535 バイト分コピー Heartbeat Response 65535 Hello クレジットカード番号 <- レスポンス ID とパスワード情報 秘密鍵 <-コピー 本来 Hello は 5 バイトですが、payload_length に 65535 を挿入することにより、Hello のメモリを超え て隣接するメモリ情報までコピーしレスポンスしていることが分かります。 6 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 3.5. 影響を受けるバージョン Windows 環境においての影響 Windows 環境のシステムは、SSL/TLS 通信において OpenSSL を使わない独自の実装によるため IIS, Exchange 等は Heartbleed の影響を受けないと Microsoft 社が公式にアナウンスしています。 しかし、OpenSSL の Windows バイナリ版を使用している場合は、脆弱性の影響を受ける可能性があ るため脆弱性の確認を行わなければなりません。 4. 対策方法 4.1. サーバ側の対策 Heartbleed の影響を受ける場合、早急に下記の対策を実施しなければなりません。 OpenSSL の更新 OpenSSL を Heartbleed の影響を受けないバージョンへ更新することで対策可能です。 下記手順は RHEL 系を例に挙げています。ディストリビューション毎にパッケージが異なる為、適宜変 更してください。 ① OpenSSL のバージョン確認 下記のコマンドを実行し影響を受けるバージョンであることを確認します。 #rpm -q openssl ② OpenSSL の更新の実行 下 記 の コ マ ン ド を 実 行 し OpenSSL を 最 新 の バ ー ジ ョ ン に 更 新 し ま す 。 #sudo yum update openssl 「Complete! 」が表示され正常に更新が完了したことを確認します。 ③ OpenSSL のバージョン再確認 再度バージョンを確認し、正常に更新されているか確認します。 ④ サービスの再起動 OpenSSL の影響を受けるサービスを再起動します。 Apache HTTP Server の場合は下記のコマンドを実行してください。 #service httpd restart 7 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 Heartbeat extension の無効化 OpenSSL に Heartbeat extension を無効にする -DOPENSSL_NO_HEARTBEATS コマンドラインを付与しコンパイルします。このコマンドラインにより Heartbleed のそもそもの原因 の Heartbeat が 無 効 化 の バ イ ナ リ に な る た め 、 脆 弱 性 を 受 け る バ ー ジ ョ ン で あ っ て も Heartbleed に対策できます。 サーバ証明書の更新 OpenSSL を Heartbleed の影響を受けないバージョンへ更新する、Heartbeat extension を 無効化にすることにより、Heartbleed は対策できますが、未対策の期間に Heartbleed の脆弱 性を悪用し秘密鍵が盗取される可能性があります。 そのため、サーバ証明書も合わせて更新(再作成, 再発行)を行う必要性があります。 更新手順や更新費用等は証明書発行元に確認してください。 4.2. クライアント側(ユーザ側)の対策 Heartbleed はサーバ側に起因するため、クライアントは根本的な対策ができません。しかし、万が一クラ イアントの機密情報が漏洩した場合の対策として、登録情報(ID やパスワード)を変更するなど保険的に 対策することにより、情報漏洩によるなりすましに対して一定の効果があります。 この他、ID・パスワードの使いまわしをしている場合、他サービスへの不正アクセスが懸念されるため、利用 しているサービス全ての登録情報を異なるものに変更することが望ましいです。 4.3. その他システムの影響 OpenSSL は Web やメッセージング(E メール等)のみならず、ネットワーク機器やアプライアンス、 AndroidOS の携帯端末等にも利用されています。そのため各ベンダからの情報を確認し適切な対策を 講じることが必要です。 8 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 5. 巻末付録 参考情報 ・<技術解説>3 分でちょっとわかる「Heartbleed 問題」と「SSL Heartbeat」 | Global Liner ~グ ローバルナレッジ PR ブログ~ | グローバルナレッジネットワーク http://blog.globalknowledge.co.jp/globalliner/tips/3heartbleedssl-heartbeat.html ・OpenSSL の脆弱性「Heartbleed」について -サイバートラスト株式会社https://www.cybertrust.ne.jp/ssl/sureserver/heartbleed.html ・OpenSSL の脆弱性にご注意ください | さくらのクラウドニュース http://cloud-news.sakura.ad.jp/2014/04/10/20140407-openssl-security-advisory/ ・巷を賑わす Heartbleed の脆弱性とは?! — Mobage Developers Blog http://developers.mobage.jp/blog/2014/4/15/heartbleed ・三菱 UFJ ニコスも被害を公表 Heartbleed で致命傷を負わないために |ビジネス+IT http://www.sbbit.jp/article/cont1/27881 ・ OpenSSL Heartbeat Extension Vulnerability in Multiple Cisco Products - Cisco Systems http://www.cisco.com/cisco/web/support/JP/112/1122/1122331_cisco-sa-20140 409-heartbleed-j.html ・Red Hat Customer Portal https://rhn.redhat.com/errata/RHSA-2014-0376.html ・CVE - CVE-2014-0160 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160 ・Microsoft Services unaffected by OpenSSL "Heartbleed" vulnerability - Microsoft Security Blog - Site Home - TechNet Blogs http://blogs.technet.com/b/security/archive/2014/04/10/microsoft-devices-and-s ervices-and-the-openssl-heartbleed-vulnerability.aspx ・OpenSSL の脆弱性 – Heartbleed について | OpenVPN.JP 9 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc. 「Heartbleed」脅威と対策 第 1.0 版 http://www.openvpn.jp/document/openssl-heartbleed/ ・ Google Online Security Blog: Google Services Updated to Address OpenSSL CVE-2014-0160 (the Heartbleed bug) http://googleonlinesecurity.blogspot.co.uk/2014/04/google-services-updated-to-a ddress.html 改訂履歴 版数 発行日 改訂履歴 1.0 版 2014/4/30 初版 (藤井 翼) 本資料の問い合わせや「Heartbleed」の脆弱性の確認方法などは以下のメールアドレスまで、お問い合 わせください。 E-Mail: [email protected] 10 ALL Rights Reserved, Copyright 2014 BelueCreative,Inc.
© Copyright 2024 Paperzz