ブログ(脅威調査)

モバイル端末を襲うFREAK攻撃Android、iOSの人気アプリに潜む脆弱性の脅威

本コンテンツは、2015年3月17日(米国時間)にFireEye, Inc.のブログにて公開された内容の翻訳です。 本内容は予告なく更新されている可能性があることをご了承ください。

米国カリフォルニア州ミルピタス発
FREAK攻撃に関する昨今の情報開示[1]に伴い、脆弱性「Heartbleed」[2]が発覚した後、再びTLSの実装に対するセキュリティの懸念が高まっています。しかし、freakattack.comなどのサイトを見ても、各種ブラウザ等クライアント側のセキュリティチェックが喚起される程度に留まっています。そこで本稿(オリジナルはブログ記事)では、クライアントへのFREAK攻撃に対するiOS/Androidアプリのセキュリティ脅威について検証します。

FREAK攻撃とは、「脆弱なクライアント・サーバー間のHTTPS接続を傍受され、攻撃者が脆弱な暗号化技術の使用を強制することで、これを突破して機密データの窃取・操作を可能にする」[1]ものです。FREAK攻撃が成功するには、サーバーがRSA_EXPORT暗号スイート(輸出用RSA暗号)を受け入れるとともに、クライアントが輸出用ではない暗号スイートで一時RSAキーを許可する必要があります。これによって攻撃者は接続の暗号強度を弱め、データを窃取しやすい状態にすることが可能になります。

3月4日現在、AndroidとiOSのいずれの最新版プラットフォームについても、FREAKへの脆弱性が認められます[3]。iOSとAndroidのいずれもアプリも、OpenSSLライブラリそのものの脆弱版を含む可能性があることから、FREAKはプラットフォームの脆弱性であり、アプリの脆弱性でもあるということができます。そのため開発メーカーによってAndroidやiOSのパッチが公開された後でも、RSA_EXPORT暗号スイートを受け入れたサーバーに接続すれば、こうしたアプリは引き続きFREAKに脆弱な状態になるのです。アップルがiOS 8.2でiOSのFREAKの脆弱性を修正した[4]3月9日以降も、一部のiOSアプはいまだにFREAK攻撃への脆弱性が残るのはそのためです。

FireEyeでは、Google Playでのダウンロード数が100万回を超える人気Androidアプリ10,985種類について解析した結果、脆弱なHTTPSサーバーへ接続する脆弱なOpenSSLライブラリの使用により実に1,228種類(全体の11.2%)のアプリがFREAK攻撃に対して脆弱であることが判明しました。これら1,228種類のアプリのダウンロード回数は、合計すると63億回以上に上ります。1,228種類のAndroidアプリのうち、Androidのバンドル版OpenSSLライブラリを使用しているものは664種類、自社コンパイルのOpenSSLライブラリを採用しているものは564種類でした。こうしたOpenSSLバージョンはすべて、FREAKに対して脆弱です。

iOSの場合も、人気iOSアプリ14,079種類のうち771種類(全体の5.5%)が脆弱なHTTPSサーバーに接続しています。これらのアプリは、バージョン8.2未満のiOS上で、FREAK攻撃に対して脆弱な状態です。こうした771種類のアプリのうち、自社開発のOpenSSLの脆弱版を保有しているのは7種類あり、これらはiOS 8.2上でも脆弱な状態となります。

l脆弱性の現状
攻撃者は、モバイルアプリとバックエンドサーバー間の暗号化トラフィックを傍受・改ざんするため、中間者攻撃(MITM)の手法を用いてFREAK攻撃を開始すると考えられます。ARPスプーフィングやDNSハイジャックなど、既知の手法を用いて攻撃できます。暗号は必ずしもリアルタイムで破る必要はなく、暗号の弱いネットワーク・トラフィックを記録し、これを解読した上で、内部の機密情報にアクセスできます。

表1は、セキュリティやプライバシーの観点から機密性の高い分野におけるAndroidとiOSの脆弱なアプリの数を示したものです。スポーツやゲームといった、機密性が比較的低い分野については、本表には含まれません。赤い部分で示される通り、FREAKの脆弱性はアプリ開発者によって修正が進められています。表2はAndroidアプリにおける脆弱なアプリの実際のダウンロード数を示したものです。そのうち青い部分は、3月10日時点でもなお脆弱であるアプリのダウンロード数を示しています。