Heartbleedの余韻さめやらぬなか、新たな脆弱性が発見され修正バージョンがリリースされています。
脆弱性の概要からAndroidへの影響までまとめてみました。
参考リンク
- OpenSSL CCS Injection Vulnerability - lepidum
- CCS Injection脆弱性(CVE-2014-0224)発見の経緯についての紹介 - OpenSSL #ccsinjection Vulnerability
- OpenSSL における Change Cipher Spec メッセージの処理に脆弱性 - JVN#61247051
- OpenSSL、新たなパッチが公開--重大な脆弱性がまたも発見される - CNET Japan
- OpenSSLにまた重大な脆弱性、直ちにパッチ適用を - ITmedia エンタープライズ
1.原因
右図はOpenSSLの通常のハンドシェーク(通信確立の手順)です。
JVNやニュースサイトによる説明はよくわからないですよね(; ̄ー ̄A
lepidumのページによると、
通信開始手順の途中で不正な信号を送ると、該当する通信で使われる一時的な暗号鍵が、第三者でも予想できてしまうという脆弱性です。 暗号鍵がわかると通信を盗み見られたり、なりすまされたりする危険があります。としています。
lepidumのブログによる解説を見ながら解説すると、
- 通常は、右の順序でハンドシェークは行われる
- サーバーもクライアントもChange Cipher Spec(CCS)送信は、必ず右図のタイミング(KeyExchange以降)で行う
- にもかかわらず、CCS受信は、2004年までは任意のタイミングで、2004年の修正後はServerHello(new_cipher設定)以降受理可能な仕様になっていた
- サーバー=クライアント間に介在する第三者が送信したCSSをキー交換前にサーバーが受信すると、サーバーは空の鍵情報を利用して暗号化鍵を生成する
- 空の鍵情報を利用して生成された暗号化鍵は弱く第三者が予想可能で、暗号を解読されたり改ざんされる危険性がある
つまり、SSL/TLSにおいて決められた手順を逸脱した時の対応が十分ではなかったために今回の脆弱性が存在していたようです。
2.影響
SSL/TLS通信において、サーバー=クライアント間に第三者の介在を許してしまうと、サーバー・クライアントに気付かれずに通信内容を解読され、改ざんされるおそれがあるということです。具体的には、
クライアントとサーバがともにバグが存在するバージョンで、サーバがバージョン1.0.1以降の場合に、通信の盗聴・改竄を行う攻撃が行われる恐れがあります。とのこと。
当初、サーバーだけバグが存在する場合でも攻撃が行われる恐れがあるとされていましたが、この危険がないことが確認されています。
我々クライアント側への影響について、CNET Japanの記事を引用すると、
GoogleのAdam Langley氏は同脆弱性の分析を自らのブログに記している。Langley氏は「(中略)こういった攻撃を行うには被害者に対して中間者攻撃が可能な位置に自らを置く必要があり、非OpenSSLクライアント(「Internet Explorer」(IE)や「Firefox」、デスクトップ版および「iOS」版の「Chrome」、そして「Safari」)はこの脆弱性の影響を受けない。とは言うものの、すべてのOpenSSLユーザーはアップデートを実施すべきだ」と記している。とのこと。
不特定多数の情報を抜き取れた”Heartbleed”とは違い、今回はターゲットを定めて自らをその中間に配して攻撃する”標的型攻撃”に利用される可能性が高いです。
3.対策
サーバー・クライアントのOpenSSLのバージョンを以下のバージョンにアップデートする必要があります。- 1.0.1から1.0.1g→1.0.1h
- 1.0.0から1.0.0l→1.0.0m
- 0.9.8y以前の全て→0.9.8za
サーバー側が対応していなくても、クライアント側がアップデート済みでも影響を受けないので、クライアント側がアップデートすることで自衛する事が可能です。
4.Androidにおける対策
Android OSにはOpenSSLが組み込まれているため、キャリアやメーカーからのアップデートを待つしか方法はありません。各アプリがOpenSSLを使用している場合は、サーバー側の対応済み情報を確認するか修正アップデートを適用する必要があります。
- Android版Chrome向けには既に修正アップデートが配信(Chrome for Android Update参照)されていますので、早めに更新したいところです。
- そのほかのアプリがOpenSSLを利用しているかどうかは、Heartbleedのときも紹介したBluebox Heartbleed Scannerなどのアプリを利用するのが良いと思います。
→当方の環境では、au Walletアプリが1.0.1gを利用していました。
lepidumでも、
攻撃者は被害者とサーバーの間で通信を中継する装置の振りをして、通信の盗聴・改竄・乗っ取りを行います。 公衆無線LANホットスポットがこのような中間者攻撃の場として使われる危険が高いです(通常は通信経路に割り込むことができない)。 インターネットバンキング、ネットショッピングなどを利用する際は、公衆Wifiを避け、3GやLTE、その他信頼できるネットワークを使うとよいでしょう。としていますので、今回の脆弱性云々に限らず、重要な情報を送受信する際は公衆Wi-Fiを避けたり、自宅の無線LANのセキュリティレベルを確認したりすることが大切だと思います。