このページの本文へ

Black Hat USA 2015/DEF CON 23 ラスベガス現地レポート第1回

「Certifi-Gate」脆弱性、リモート管理用ツールを悪用し端末を完全に乗っ取り可能

「Black Hat 2015」でAndroidの新たな脆弱性が報告される

2015年08月10日 06時00分更新

文● 谷崎朋子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 8月6日、米国ラスベガスで開催された「Black Hat USA 2015」の講演内で、Androidアプリの脆弱性「Certifi-Gate」が公開された。講演者は、これが悪用された場合、攻撃者がAndroidデバイスを完全に乗っ取り、ID/パスワードや連絡先情報、メールまであらゆる情報を窃取できる可能性があり、その影響はAndroidデバイス数百万台に及ぶと述べた。

講演者であるチェック・ポイント・ソフトウェア・テクノロジーズのオハド・ボブロフ氏同じくチェック・ポイントのアヴィ・バサーン氏

リモートサポートツール(mRST)の脆弱性を悪用

 今回、脆弱性が確認されたのは「mRST(モバイルリモートサポートツール)」と呼ばれるジャンルの、複数のモバイルアプリである。mRSTは、モバイル通信事業者やデバイスメーカー、企業のIT部門などが、ユーザーが持つモバイルデバイスのサポートサービスを遠隔から行うために利用するツールだ。

 mRSTは、本体アプリとプラグインアプリで構成される。本体アプリは、基本的にはインターネット接続機能しか提供しない。一方のプラグインアプリは、サードパーティのアプリ開発メーカーなどが作成し、アプリのインストール、デバイス画面へのアクセス、ユーザー入力の制御など「特権的な」機能を実行できる。たとえばユーザーが「デバイスの○○機能の設定ができない」とサポートに問い合わせると、サポート事業者はこのプラグインアプリ、アプリを介してデバイスにアクセスし、ユーザーの代わりに画面を操作しながら設定を行うわけだ。

 リモートからデバイスの画面を確認したり、アプリのインストールなどの機能を実行したりできるという点で、mRSTはマルウェアで悪用されるRAT(リモートアクセスツール)にも似ているが、デバイスがユーザーの手に渡る時点でプリインストールされていることが多く、ほとんどの場合はユーザー自身でアンインストールできない点が異なる。

mRST(モバイルリモートサポートツール)のアーキテクチャ。「プラグインアプリ」部分がリモート操作のコア機能(特権操作)を提供する

 もっとも、これだけの特権的な(ある意味で“危険な”)機能が許されるのには条件がある。それは、そのアプリがデバイス内のシステムディレクトリ内にプリインストールされている、またはデバイスメーカー(またはOEM製品)の発行するコード証明書を持っている「特権システムアプリ」であることだ。Androidの仕様では、こうした条件がクリアされれば、特権的な機能を実行するアプリであってもユーザー側のパーミッション要求画面には詳細が表示されない。

Androidの特権機能に対する仕様。リモートからのアプリインストールやデバイス画面参照なども、一定の条件を満たせばユーザーの確認(パーミッション許可)なしで実行できる

 しかし、ボブロフ氏は「実際にプラグインアプリ自体がぜい弱であるかどうかを正しく検証しているmRSTの開発元は、それほど多くないだろう」と指摘する。しかも、そんな重要な権限を許可するカギであるにもかかわらず、証明書の作成には特に制限がなく、有効期限で破棄されることもないし、認証局などの第三者機関による管理もされていない。「現状は、利用する側が証明書を好きなように作成・利用し、ほぼ永遠に使い続けられるということだ」(バサーン氏)。

デバイス画面が丸見え、通信先も勝手に変更する攻撃をデモ

 こうした仕様を悪用した脆弱性「Certifi-Gate」が発見されたのは、LogMeIn、RSUPPORT、TeamViewer、CommuniTakeの大手ベンダーが提供するmRSTアプリだ。Samsung、LG、HTC、LenovoなどのAndroidデバイスで問題が発生するおそれがある。

 たとえば、Google Playで500万回以上ダウンロードされている「TeamViewer Quick Support」の場合、プラグインアプリは本体アプリが持つコード証明書内に記述されたシリアル番号と、プラグインアプリ内にハードコードされた(直接書きこまれた)シリアル番号とを照合し、一致する場合には「Binder」というプロセス間通信機能によって通信が確立される。

 ただし、先に述べたとおり、証明書は誰でも作成できる。また、AndroidはBinderで接続されるアプリが通信すべき相手かどうかを検証する仕組みがなく、どんなアプリでもプラグインアプリに接続できる。

 したがって攻撃者は、プラグインにハードコードされたシリアル番号を解析して手に入れ、そのシリアル番号を記載した証明書を作成して別の本体アプリ(つまり偽アプリ)に実装することができる。この偽アプリをユーザーにうまくインストールさせることさえできれば、偽アプリはプラグインアプリと通信を確立し、攻撃者はユーザーのデバイスを自由に操れるようになるということだ。

TeamViewerのコード解析結果。プラグインアプリにハードコードされたシリアル番号が見えている。これを流用すれば、偽の本体アプリを作成できてしまう

 ボブロフ氏たちは、実際に偽アプリを作成してAndroidデバイスを乗っ取ることが可能であるという攻撃デモを実演した。

 「デバイス画面をリモートから覗きこむこともできるので、入力中のID/パスワードも全部丸見えだ。たとえ暗号化されたセキュアコンテナ内で作業していても、ファイルの閲覧などユーザー側が見えているものは攻撃者にも丸見え状態なので、対策としては意味がない」(ボブロフ氏)

Certifi-Gateの脆弱性を利用してAndroidデバイスを乗っ取るデモ。左が被害者のデバイス画面、右が攻撃者の画面

 また別のmRSTアプリ、CommuniTakeの「RemoteCare」では、あるコマンドをSMSで送信すると、アプリの設定を変更できることが判明したという。

 これに加えて、SMSメッセージの内容が正しくサニタイズ(無害化。特殊文字を使って攻撃スクリプトを実行させないようにする処理)されていないため、RemoteCareアプリが本来通信すべきサポート事業者のサーバーを攻撃者のサーバーに書き換え、通信を奪うことが可能だという。

CommuniTakeでは、SMSメッセージを送るだけでアプリの通信先サーバーを書き換えられる脆弱性が発見された

MDMソリューションへの影響も懸念される

 「Certifi-Gateの脆弱性については、今年4月中旬にベンダーやOEM各社、Googleに報告した。5月には各社から連絡があり、6月にはGoogle Playストアにプラグインアプリの新バージョンをアップする企業が何社かあった」。そう近況報告したボブロフ氏だが、「8月現在、まだ連絡のないベンダーもいくつかある」と明かす。

 Certifi-Gateの脆弱性が自分のAndroidデバイスにあるかどうかは、チェック・ポイントが無償公開するスキャナアプリで検証できる。

 今回の脆弱性について、ネットエージェント会長の杉浦隆幸氏は、基本的に当該アプリがプリインストールされたり、インストールされたりしていなければ影響はないと述べる。

 「ただし、似たような仕組みを多くのMDM(モバイルデバイス管理)ソリューションが採用しているので、ベンダー各社は同様の脆弱性がないかどうかを早急に調査するべきだ」(杉浦氏)

カテゴリートップへ

この特集の記事
ピックアップ