ブログトップ 記事一覧 ログイン 無料ブログ開設

piyolog RSSフィード

2014-06-05

OpenSSLの脆弱性CCS Injection(CVE-2014-0224)の攻撃が行われる恐れがあるパターンをマトリックス化してみた。

| 23:28 |  OpenSSLの脆弱性CCS Injection(CVE-2014-0224)の攻撃が行われる恐れがあるパターンをマトリックス化してみた。を含むブックマーク

lepidum社の菊池氏がOpenSSLの実装に脆弱性があることを発見しました。この脆弱性はChangeCipherSpecメッセージの処理に欠陥があるもので、悪用された場合に暗号通信の情報が漏えいする可能性があると同社公開情報では説明されています。

尚、6月6日にレピダム社がクライアントの偽装を行う攻撃が行われる恐れについて危険がないことが確認されたとして訂正を行いました。それに伴い以下の内容も修正を加えています。(修正前の記事は魚拓を参照してください。)

lepidum社 公開情報

IIJ社 調査結果

対策

  • 開発者、ベンダが提供するOpenSSL最新バージョンへ更新する。

ワークアラウンド

またワークアラウンドとして、オプション -DOPENSSL_NO_NEXTPROTONEG を付けてコンパイルした OpenSSL 1.0.1g をサーバとして使った場合には、MITM 攻撃が成立しないことを IIJ では確認しています。ただし、クライアントとしては効果がありません。

https://sect.iij.ad.jp/d/2014/06/069806.html#fnref:serverworkaround

脆弱性識別番号

注意喚起・脆弱性関連情報

影響を受けるOpenSSLのバージョン

OpenSSLCVE-2014-0224の影響を受けるバージョン修正バージョン
0.9.8系0.9.8y以前の全て0.9.8za
1.0.0系1.0.0〜1.0.0l1.0.0m
1.0.1系1.0.1〜1.0.1g1.0.1h
  • ただし脆弱性が存在しても悪用(MITM)可能なケースは限定されます。

攻撃が行われる恐れがあるパターン

lepidum社の公開情報では次のように説明がされています。

どのような攻撃が行われる恐れがありますか?

クライアントサーバがともにバグが存在するバージョンで、サーバがバージョン1.0.1以降の場合に、通信の盗聴・改ざんを行う攻撃が行われる恐れがあります。

http://ccsinjection.lepidum.co.jp/ja.html

これをマトリックスに起こしてみました。間違っていたらご指摘頂けると嬉しいです。尚、以下記載の通り当初指摘されていた「クライアントの偽装を行う攻撃が行われる恐れ」は危険がないことが確認されたため、マトリックスから削除しました。

f:id:Kango:20140607011107p:image

Coqについて

クライアントの偽装を行う攻撃が行われる恐れ」の危険はない

北河さんに教えていただいたのですが、CCS Injectionのリスクについて英語版の説明は次の通りとなっています。(日本語版の「クライアントの偽装を行う攻撃が行われる恐れ」に該当すると思われる箇所を赤字としました。)中間者攻撃が行われている状況でサーバーにCCS Injectionの脆弱性が残っていればクライアント脆弱性有無に関係なく認証済のセッションをのっとることが可能と読めます。レピダム社公開情報では詳細は明らかとはなっていません。

Q. What are the risks?

A. Attackers can eavesdrop and make falsifications on your communication when both of a server and a client are vulnerable, and the OpenSSL version of the server is 1.0.1 or higher. Attackers can hijack the authenticated session, if the server is vulnerable (even if the client is not vulnerable).

http://ccsinjection.lepidum.co.jp/

6/6の#mozaicfmでCCS Injectionの報告者の方々を招いてポッドキャスト収録を予定されており、北河さんがこの記載について質問されています。

その後、IIJ社等の検証により、「クライアントの偽装を行う攻撃が行われる恐れ」の危険がないことが確認されました。lepidum社の情報でも次のように修正・追記されました。

サーバだけがバグの存在するバージョンの場合は、クライアントの偽装を行う攻撃が行われる恐れがあります。

クライアントの偽装とは具体的にどのようなことですか?

正規クライアントには正常にSSL Connectionが確立しなかったように見せかけ、攻撃者はサーバー側と通信を続けます。サーバーにはSSL Connectionが確立できたように思わせ、被害者のクライアントになりすまします。クライアント証明書を利用するようなケースでは、認証済セッションハイジャックされる危険性があります。この攻撃はクライアントOpenSSL以外でも成立する恐れがあります。

Adam Langleyさんの分析Tadaaki Nagaoさんの検証の結果、この危険はないことがわかりました。

http://ccsinjection.lepidum.co.jp/ja.html

CVE-2014-0224チェック方法

以下にCCS Injectionのチェック方法をまとめます。またサーバー側のチェックは、特別な事情がない限りは直接バージョンの確認を行えばよいと思います。

チェック方法対象
SSL Server Test公開サーバー
Nessusサーバー
rcvalle氏チェックツール(C)クライアント
サーバー
Adam Langley氏チェックツール(Go)サーバー
CRAIG YOUNG氏チェックツール(Python)サーバー
NSEサーバー

(1) SSL Sever Test

f:id:Kango:20140614135022p:image

(2) Nessus プラグイン

f:id:Kango:20140607133253p:image:w450

(3) rcvalle氏チェックツール

CCS Injectionの脆弱性が存在するか確認するツールと思われるコードがGitで公開されています。

対象公開先piyokango検証
クライアント向けccsinjection_server.c未検証
サーバー向けccsinjection.c未検証

(4) Adam Langley氏チェックツール

How to use

$ ./earlyccs_check google.com

Handshake failed with error: remote error: unexpected message

Looks ok.

$ ./earlyccs_check github.com

Server is affected (1.0.1).

$ ./earlyccs_check amazon.com

Server is affected (0.9.8 or 1.0.0).

https://www.imperialviolet.org/2014/06/05/earlyccs.html

(5) CRAIG YOUNG氏チェックツール

C:\Users>OSSL_CCS_InjectTest.py www.google.com

CVE-2014-0224 Detection Tool***

Brought to you by Tripwire VERT (@TripwireVERT)

[TLSv1.2] www.google.com:443 rejected early CCS

[TLSv1.1] www.google.com:443 rejected early CCS

[TLSv1] www.google.com:443 rejected early CCS

[SSLv3] www.google.com:443 rejected early CCS

No need to patch.

(6) NSE

  • ssl-ccs-injection
    • rcvalle氏のチェックツールがインプリメントされている模様。

  • Example Usage

nmap -p 443 --script ssl-ccs-injection <target>

http://nmap.org/nsedoc/scripts/ssl-ccs-injection.html

タイムライン(一部)

日付出来事
2014年4月19日頃lepidum社が調査を開始。
2014年4月22日lepidum社がOpenSSL脆弱性を発見。
2014年4月22日lepidum社がIPA脆弱性情報を届け出。
2014年5月1日情報セキュリティ早期警戒パートナーシップに基づきJPCERT/CCOpenSSL Securityへ初回の連絡。
2014年5月2日JPCERT/CCOpenSSL Securityへ詳細なレポートと再現方法を送付。
2014年5月9日OpenSSL脆弱性を確認し、CVE-2014-0224を採番。
2014年5月13日OpenSSLが報告者と更新パッチやその他技術的な詳細について共有するため直接連絡。
2014年6月5日lepidum社がOpenSSL脆弱性 CCS Injectionに関する情報を公開。
2014年6月6日lepidum社がクライアントの偽装について危険がないことが確認されたため、脆弱性公開情報を修正。

関連情報

謝辞

  • @110_ さんよりチェックツールと思われる情報をいただきました。ありがとうございます。
  • @yng_hrさんより攻撃を受ける恐れのパターンで「その他のケース」の可能性についてご指摘いただきました。ありがとうございます。
  • @kitagawa_takujiさんより、英語版「クライアント偽装の攻撃が行われる恐れ」、及びCCS Injectionスキャン方法について情報をいただきました。ありがとうございます。
  • @msaitotypeRさんよりタイムラインの届け出先がIPAであるとのご指摘を頂きました。ありがとうございます。

更新履歴

  • 2014/06/05 PM 新規作成
  • 2014/06/06 AM タイムラインとチェックツールと思われる情報を追記。
  • 2014/06/06 PM 脆弱性関連情報を追記。
  • 2014/06/06 PM 注意喚起などの最新情報を反映。「クライアントの偽装を行う攻撃が行われる恐れ」気になる点について追記。
  • 2014/06/07 AM クライアント偽装について危険がないことが確認されたこと等、最新情報を反映。IIJのリンクを追記。タイムラインを修正。
  • 2014/06/08 PM CCS Injectionスキャン方法を追記。
  • 2014/06/09 PM CCS Injectionスキャン方法を追記。
  • 2014/06/14 PM CCS Injectionスキャン方法の最新情報を反映。

*1:6/13に正式版が公開されました。