Androidアプリで求められる正当な権限を組み合わせることで、ソフトウェアキーボードの入力情報を全てコピーしたり、連絡先を根こそぎ盗み出したり、全権限の与えるゴッドモードで不正アプリをインストールしたりとやりたい放題される脆弱性が発見されました。この脆弱性問題は「Cloak and Dagger」と名付けられており、発見したジョージア工科大学の研究者は、「この脆弱性はGoogleによるAndroidの設計思想に起因しており、穴を塞ぐことは困難である」と警告しています。

Cloak and Dagger: From Two Permissions to Complete Control of the UI Feedback Loop

(PDFファイル)http://cs.ucsb.edu/~yanick/publications/2017_oakland_cloakanddagger.pdf

Combination of features produces new Android vulnerability -- ScienceDaily

https://www.sciencedaily.com/releases/2017/05/170523083601.htm

Cloak and Daggerは、Androidアプリに付与される権限「draw on top(SYSTEM_ALERT_WINDOW )」「a11y(BIND_ACCESSIBILITY_SERVICE)」を単独または併用して悪用するという攻撃で、これらの権限は明示的に許可を求めることなく利用されるため、ユーザーには通知されないとのこと。

Cloak and Daggerによって攻撃者ができる具体的なハッキング手法がムービーで説明されており、ゾっとするような内容になっています。

・見えないグリッド攻撃

キー入力した内容が筒抜けになる様子は以下のムービーで確認できます。

Cloak & Dagger: Invisible Grid Attack - YouTube

鍵となるアイデアは、「目隠し」と……



「画面オーバーレイ」での見えないグリッド生成。



これらを組み合わせると、「何とキー入力したか?」を読み取ることができます。



攻撃の内容を分かりやすくするために作られた検証アプリの「Make Attack Visible(攻撃を可視化する)にチェックを入れると……



画面下半分に、オーバーレイで隠されたグリッドが表示されました。



グリッドはホーム画面でも隠されています。



ソフトウェアキーボードにぴったり対応するグリッドは、キーがタップする度にタップされ入力内容を読み取っているというわけです。攻撃されていることをユーザーが知るよしもありません。



・こっそりパスワード窃取攻撃

オーバーレイとa11y(アクセシビリティ)を悪用すると、パスワードも盗み出せます。

Cloak & Dagger: Stealthy Phishing Attack - YouTube

Facebookアプリのログイン画面。



パスワードを入力。



無事、ログイン完了。



この操作によって、すでにパスワードは盗み出されたとのこと。



こんな形でオーバーレイで隠されたキーロガーが用意されていたようです。



・悪意あるアプリの無断インストール

「draw on top」と「a11y」権限を組み合わせて悪用することで、悪意のあるアプリを勝手にインストールすることも可能です。

Cloak & Dagger: Clickjacking + Silent God-mode App Install - YouTube

最初に行われるのは「a11y」を有効にすること。



「C&D POC」という実験用に作られたアプリを実行します。



初回起動時にはチュートリアルがある模様。「START TUTORIAL」をタップ。



ドロイド君が案内するようです。「NEXT」をタップ。



ムービーを見る準備ができたので、「OK」をタップ。



ムービーが始まりました。



この時点でa11yは有効化されているとのこと。



ムービーが終わって……



チュートリアルも終了。



チュートリアルの間に何が起こっていたのかを説明すると以下の通り。



チュートリアルを始めるためにタップした行為は、同時にアクセシビリティを有効化していました。



「NEXT」「OK」あどの各ボタンには、別の作業が隠されており……





アプリを勝手にインストールされてしまいます。



ムービー再生の裏で自動で進む各作業。





アクセス許可も全て「ON」に。



最後は履歴を消去して……



ホーム画面に戻り……



不正アプリのインストールが完了。ユーザーはマルウェアがふんだんに内包されたアプリを無断でインストールされても気付くことはありません。



Cloak and Daggerを発見したカリフォルニア大学サンタバーバラ校のポスドクで、ジョージア工科大学に夏期インターン中のYanick Fratantonio氏らの研究チームは、Cloak and Dagger手法を利用したアプリを被験者20人でテストしたところ、ハッキングされたことに気付いた人はいなかったとのこと。悪意あるアプリをインストールして使用してしまえば、攻撃に気付くことは非常に困難だと言えそうです。

Cloak and Daggerでは、ユーザー名やパスワードなどを音声コマンドで入力したりスクリーンリーダーに出力を許可したりすることで視聴覚障害者をサポートするための機能「BIND_ACCESSIBILITY_SERVICE」(a11y)と、チャットアプリや地図アプリで利用される画面の上に描画できるようにするための「SYSTEM_ALERT_WINDOW」(draw on top)という2つの権限のいずれか一方、または両方を悪用する攻撃手法です。組み合わせて攻撃するときには、「SYSTEM_ALERT_WINDOW」がCloakとして、「BIND_ACCESSIBILITY_SERVICE」がDaggerとして機能することから、「Cloak and Dagger(外套と短剣)」と名付けられています。

研究者によると「draw on top」「a11y」権限を悪用することで、可能になる攻撃は以下の通り。

◆「draw on top」

・コンテキストを隠蔽した状態でクリックを誘うこと

・見えないグリッド攻撃

◆「a11y」

・キーストロークの記録

・セキュリティPINの読み取り

・PIN入力でのロック解除+オフスクリーンでの攻撃実行

・2段階認証トークン(SMSやGoogle Authenticatorなどのトークンを含む)の窃取

・ウェブ検索

◆「draw on top」と「a11y」の併用

・Googleアプリのサイレントインストール&すべての権限の有効化

・パスワード窃取(ユーザーはログインしたことしか認識できない)

より詳細な内容は、以下のページで解説されています。

Cloak and Dagger: From Two Permissions to Complete Control of the UI Feedback Loop

http://cloak-and-dagger.org/

Cloak and Daggerの攻撃がやっかいなのは、ユーザーから権限が悪用されていることを見抜くことが難しいという点です。GoogleのAndroidアプリの設計上、アプリが公式のGoogle Playストアからダウンロードされたものである場合、「draw on top」は自動的に許可されてしまうので、ユーザーに気付かれずに「a11y」が有効化されてしまう危険があるとのこと。そして、研究者の調査によると、Google Playストアでよくインストールされる上位5000アプリのうちの約10%のアプリがオーバーレイ機能を持ち、a11yをONにした状態で多くのアプリが配布されているそうです。

ジョージア工科大学の研究者は「Cloak and Dagger」についてGoogleに通知済みですが、Googleのアプリ設計を悪用している攻撃であるため、脆弱性を塞ぐことは非常に難しいと考えられています。ユーザー側でできることとは、たとえGoogle Playストアからダウンロードしたアプリであっても、アプリが要求する権限をチェックすることぐらいです。なお、Fratantonio氏は「アプリ開発者は、権限を組み合わせることで脆弱性が作られることがあるという事実を踏まえて、関係性のなり機能が相互作用する可能性まで注意を払うべきだ」と述べています。