Skip to content

Instantly share code, notes, and snippets.

@spiegel-im-spiegel
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spiegel-im-spiegel/47f340122c895ccc8bb8 to your computer and use it in GitHub Desktop.
Save spiegel-im-spiegel/47f340122c895ccc8bb8 to your computer and use it in GitHub Desktop.
RSA-to-EXPORT_RSA ダウングレード攻撃に関する覚え書き

RSA-to-EXPORT_RSA ダウングレード攻撃に関する覚え書き

または Factoring attack on RSA-EXPORT Keys(FREAK)。 SSL/TLS で「輸出グレード暗号」を受け入れてしまう実装あり。

概要

中間者攻撃(Man-in-the-Middle Attack)により Web サーバへの要求を「輸出グレード暗号(RSA_EXPORT cipher suites)」に書き換えられると、サーバ・クライアントともに「輸出グレード暗号」を受け入れてしまう。

「輸出グレード暗号」の例としては以下の暗号スイートが挙げられる。

  • TLS_RSA_EXPORT_WITH_RC4_40_MD5 (この暗号スイートは RFC7465 で禁止になった)
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
  • TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA

「輸出グレード暗号」は20世紀の暗号輸出規制時代の暗号スイートで、 RSA 512bits, RC2/RC4/DES 40bits と非常に弱い暗号を使っており、現在の計算機パワーでは短時間で破られる可能性がある。 また「輸出グレード暗号」の RSA 鍵は一時鍵として作成されるが、サーバが稼働している間(リブートされるまで)使い回されることがあり、この場合は長期にわたって通信内容の盗聴や改ざんを許すことになる。

対策はサーバとクライアントの両方で必要。 ただし、予想される影響は(今のところは)限定的なので、慌てず計画を立てて対策を実行すること。

影響度

CVE-2015-0204, CVE-2015-1637 および CVE-2015-2235 より

CVSS 基本値 5.0 (AV:N/AC:L/Au:N/C:N/I:P/A:N)

基本評価基準 評価値
攻撃元区分(AV) ネットワーク(N)
攻撃条件の複雑さ(AC) 低(L)
攻撃前の認証要否(Au) 不要(N)
情報漏えいの可能性(機密性への影響, C) なし(N)
情報改ざんの可能性(完全性への影響, I) 部分的(P)
業務停止の可能性(可用性への影響, A) なし(N)

VND VU#243585 より

CVSS 基本値 7.8 (AV:N/AC:L/Au:N/C:C/I:N/A:N)

基本評価基準 評価値
攻撃元区分(AV) ネットワーク(N)
攻撃条件の複雑さ(AC) 低(L)
攻撃前の認証要否(Au) 不要(N)
情報漏えいの可能性(機密性への影響, C) 全面的(C)
情報改ざんの可能性(完全性への影響, I) なし(N)
業務停止の可能性(可用性への影響, A) なし(N)

影響を受ける実装

以下の実装以外での影響は不明

  • OpenSSL の一部のバージョン (CVE-2015-0204): 2015年1月の更新で修正済み(GitHub の履歴

    • 0.9.8zd より前のバージョン
    • 1.0.0 系で 1.0.0p より前のバージョン
    • 1.0.1 系で 1.0.1k より前のバージョン
  • Microsoft SchannelCVE-2015-1637): MS15-031 が登場。 Windows 2003 サーバでも効きます。

    • Windows Server 2003 Service Pack 2
    • Windows Vista Service Pack 2
    • Windows Server 2008 Service Pack 2
    • Windows 7 Service Pack 1
    • Windows Server 2008 R2 Service Pack 1
    • Windows 8/8.1
    • Windows Server 2012
    • Windows Server 2012 R2
    • Windows RT (8.1)
    • Server Core インストール オプション

SA 3046015 に書かれている(gpedit.msc を用いて暗号スイートを指定する)回避策を実施している場合は MS15-031 を適用する前に回避策を解除して下さい。

セキュリティ アドバイザリ 3046015 で説明されている最初の回避策を適用したシステムに MS15-031 のセキュリティ更新プログラム 3046049 を適用すると、大多数のインターネット サービスが利用できなくなる場合があります。

とのことです(「2015 年 3 月のセキュリティ情報 (月例) - MS15-018 ~ MS15-031 - 日本のセキュリティチーム」より)。

  • Google が提供する BoringSSL の 2014-11-10 以前のバージョン

  • LibreSSL の 2.1.2 より前のバージョン

  • Chrome 41 より前のバージョン(Android 版もリリース

  • AOSP(Android Open Source Project)版ブラウザについては端末ベンダに対してはパッチを配布済みだそうだ。ただし、個々の端末についてパッチを適用するかどうかは端末ベンダ次第なので、(端末ベンダでサポートされないのなら)他の安全なブラウザを使うことを強く推奨(AOSP 版ブラウザは他にもいくつか脆弱性があることが指摘されているが、 Google のサポートが終了しているため、多くの端末で放置状態)

  • Safari (SecureTransport CVE-2015-2235) は iOS 8.2 および OS X Mountain Lion v10.8.5, Mavericks v10.9.5, Yosemite v10.10.2 で修正済み

  • AppleTV は 7.1 で修正済み

  • Opera 28 (on Mac OS X and Android) より前のバージョン(28 で修正済み

  • Blackberry Browser

  • Mono は修正パッチが提供されている。 3.12.1 では修正済み

影響の有無を確認する方法

ブラウザ側は “FREAK Attack: Client Check” ページでチェックできる(先頭にチェック結果が出る。 proxy 経由ではうまくいかないとの報告あり)。 また “SSL Client Test” ページでは FREAK を含めた総合的なチェックを行う。

サーバ側は “SSL Server Test” ページでチェックできる(FREAK 以外にも総合的にチェックしてくれる)。

OpenSSL のコマンドでテストを行う。

% openssl s_client -connect [target site]:443 -cipher EXPORT

このコマンド結果がエラーにならない場合は影響を受ける。

参考ページ

一般的にウェブサイトでは、1回のセッションで輸出グレードのRSA鍵は1つしか生成されない。そして、mod_sslを使うApacheのように、ウェブサーバがリブートされるまで、ウェブサイトではその鍵が再利用される。したがって、あるサイトが一度侵入された場合、何日、何週間、あるいは何カ月にもわたって侵入されている可能性が高い。

Android用パッチの配布は、Appleよりも遅れる見通しである。GoogleがReutersに語ったところによると、Androidのパートナー各社にはすでにパッチが配布されているとのことだが、それらのパートナー企業がエンドユーザーにパッチを配布するのかどうか、配布するとしたらいつになるのかは公表されていない。

本来この512bit長の一時的RSAによる鍵交換は、EXPの暗号方式だけに適応されるものでした。しかしOpenSSLでは、EXPでない暗号方式でも利用ができるよう独自に拡張を行っていました。今回のFREAK攻撃は、OpenSSLのこの独自拡張を突いたものでした。

なお、現時点で確認されている攻撃手法においては攻撃をを成功させるために、サーバーが 輸出用RSA 鍵交換の暗号化スイートをサポートしていることが必要条件です。Windows サーバーは、既定の設定では、輸出用RSA 鍵交換の暗号化スイートを利用しないため、攻撃の影響を受けません。

This is a general class of attack I call "security rollback" attacks. Basically, the attacker forces the system users to revert to a less secure version of their protocol. Think about the last time you used your credit card. The verification procedure involved the retailer's computer connecting with the credit card company. What if you snuck around to the back of the building and severed the retailer's phone lines? Most likely, the retailer would have still accepted your card, but defaulted to making a manual impression of it and maybe looking at your signature. The result: you'll have a much easier time using a stolen card.

CiscoはOpenSSLを使用する多くの自社製品が、FREAKを含む、OpenSSLに発見された複数の脆弱性の影響を受けることを認めた。同社では脆弱性を修正するパッチをリリースしたが、現在も幾つかの製品に対する脆弱性の影響を調査中で、対象には「Jabber」「TelePresence」、各種ルータ製品、各種セキュリティ製品などが含まれる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment