piyolog

piyokangoの備忘録です。セキュリティの出来事を中心にまとめています。このサイトはGoogle Analyticsを利用しています。

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

lepidum社の菊池氏がOpenSSLの実装に脆弱性があることを発見しました。この脆弱性はChangeCipherSpecメッセージの処理に欠陥があるもので、悪用された場合に暗号通信の情報が漏えいする可能性があると同社公開情報では説明されています。
尚、6月6日にレピダム社がクライアントの偽装を行う攻撃が行われる恐れについて危険がないことが確認されたとして訂正を行いました。それに伴い以下の内容も修正を加えています。(修正前の記事は魚拓を参照してください。)

lepidum社 公開情報

対策

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

ワークアラウンド

  • IIJ社はオプションを使ったワークアラウンドを紹介しています。サーバー側での対応です。IIJ社が検証したバージョンは1.0.1gです。

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

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

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

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

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

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

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

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

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

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

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 サーバー

(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

  • Example Usage

nmap -p 443 --script ssl-ccs-injection

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/CCがOpenSSL Securityへ初回の連絡。
2014年5月2日 JPCERT/CCがOpenSSL 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に正式版が公開されました。