セキュアコーディングの手法。タップジャッキングとは?

2017年10月31日発行
ピーテル・デ・クレマー著
ケーススタディ

セキュアコーディングの手法。タップジャッキングとは?

2017年10月31日発行
ピーテル・デ・クレマー著
リソースを見る
リソースを見る
携帯電話を手にしたユーザー
携帯電話を手にしたユーザー

タップジャッキングとは、「タップ」と「ハイジャック」を組み合わせた言葉で、まさにその意味です。攻撃者がユーザーのタップを乗っ取り、意図しないことをさせる攻撃です。では、どのような仕組みで、どのようにして防ぐことができるのでしょうか。

まず、スクリーンオーバーレイについて説明します。スクリーンオーバーレイとは、Googleでは「TYPE_APPLICATION_OVERLAY」タイプのウィンドウと呼ばれています。 これは、他のアプリの上に描画されるウィンドウで、通常は画面の一部が見えなくなるだけです。これらは、アプリが新しい許可を要求するときに(下の画像の例のように)よく使用されます。

アプリケーションから連絡先ポップアップにアクセスできるようにする

Facebookのチャットバブルや、Google Mapsのナビゲーションが画面の隅に表示されるなど、この機能はクールで楽しいもので、ますます多くのアプリケーションで採用されています。

Secure Code Warrior 紹介ビデオ

しかし、これらのオーバーレイには、いくつかのセキュリティリスクがあります。アクティブなスクリーンオーバーレイは、タップの音を聞くことができ、私たちがバブルをタップしたりドラッグしたりしたことをFacebookが知ることはできません。これにより、アプリがあなたを監視し、パスワードやクレジットカードのデータを盗む可能性があります。

さらに、タップジャッキングという言葉があるように、オーバーレイは他のアプリの上に何かを描き、ユーザーを騙して異なるアクションを実行させることができます。ユーザーはオーバーレイとインタラクトしていると思っていますが、実際には、ユーザーのタップは下にあるアプリのアクションを実行しています。このようにして、オーバーレイはユーザーをだまして、特定の許可を有効にしたり、危険な設定を変更したりすることができます。この古いYouTubeのビデオでは、その様子が示されています。

上のデモンストレーションビデオがYouTubeにアップロードされたのは2010年のことなので、古いバージョンのAndroidで行われています。しかし、NougatやMarshmallowなどの新しいバージョンのAndroidでタップジャックを可能にする脆弱性が明らかになったため、この攻撃は現在でも有効です。

では、どうすればいいのでしょうか?ユーザーとしては、これらのオーバーレイがもたらす結果を認識し、それを使用するアプリに注意することが重要です。APIレベル23(Android 6.0 Marshmallow)の時点で、この機能はユーザーが明示的に許可しなければならないものになりました。しかし、これではAndroidユーザーの50%がまだ脆弱であると言えます。どのアプリがこの許可を利用しているかは、設定の「他のアプリよりも表示」で確認することができます。

開発者は、ユーザーのアクションがユーザーの完全な知識と同意に基づいて行われることを確認する義務があります。Androidでは、それを実現するための設定をビューに用意しています。 filterTouchesWhenObscured. この設定を有効にすると、ビューのウィンドウが他の可視ウィンドウによって隠された場合、フレームワークは受信したタッチを破棄します。これはとても簡単なことです。 フィルタータッチズウィン・オブスキュア を true に設定すれば、アプリはタップジャッキングから安全になります。

頑張ってください。また来週お会いしましょう

時には、許可要求の承認、購入、広告のクリックなど、ある行為がユーザーの完全な知識と同意に基づいて実行されていることを、アプリケーションが確認することが不可欠な場合があります。残念ながら、悪意のあるアプリケーションは、表示の意図された目的を隠すことで、ユーザになりすまして無意識にこれらのアクションを実行させようとする可能性があります。

https://developer.android.com/reference/android/view/View.html

リソースを見る
リソースを見る

著者

ピーテル・デ・クレマー

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

セキュアコーディングの手法。タップジャッキングとは?

2017年10月31日発行
Pieter De Cremer 著

タップジャッキングとは、「タップ」と「ハイジャック」を組み合わせた言葉で、まさにその意味です。攻撃者がユーザーのタップを乗っ取り、意図しないことをさせる攻撃です。では、どのような仕組みで、どのようにして防ぐことができるのでしょうか。

まず、スクリーンオーバーレイについて説明します。スクリーンオーバーレイとは、Googleでは「TYPE_APPLICATION_OVERLAY」タイプのウィンドウと呼ばれています。 これは、他のアプリの上に描画されるウィンドウで、通常は画面の一部が見えなくなるだけです。これらは、アプリが新しい許可を要求するときに(下の画像の例のように)よく使用されます。

アプリケーションから連絡先ポップアップにアクセスできるようにする

Facebookのチャットバブルや、Google Mapsのナビゲーションが画面の隅に表示されるなど、この機能はクールで楽しいもので、ますます多くのアプリケーションで採用されています。

Secure Code Warrior 紹介ビデオ

しかし、これらのオーバーレイには、いくつかのセキュリティリスクがあります。アクティブなスクリーンオーバーレイは、タップの音を聞くことができ、私たちがバブルをタップしたりドラッグしたりしたことをFacebookが知ることはできません。これにより、アプリがあなたを監視し、パスワードやクレジットカードのデータを盗む可能性があります。

さらに、タップジャッキングという言葉があるように、オーバーレイは他のアプリの上に何かを描き、ユーザーを騙して異なるアクションを実行させることができます。ユーザーはオーバーレイとインタラクトしていると思っていますが、実際には、ユーザーのタップは下にあるアプリのアクションを実行しています。このようにして、オーバーレイはユーザーをだまして、特定の許可を有効にしたり、危険な設定を変更したりすることができます。この古いYouTubeのビデオでは、その様子が示されています。

上のデモンストレーションビデオがYouTubeにアップロードされたのは2010年のことなので、古いバージョンのAndroidで行われています。しかし、NougatやMarshmallowなどの新しいバージョンのAndroidでタップジャックを可能にする脆弱性が明らかになったため、この攻撃は現在でも有効です。

では、どうすればいいのでしょうか?ユーザーとしては、これらのオーバーレイがもたらす結果を認識し、それを使用するアプリに注意することが重要です。APIレベル23(Android 6.0 Marshmallow)の時点で、この機能はユーザーが明示的に許可しなければならないものになりました。しかし、これではAndroidユーザーの50%がまだ脆弱であると言えます。どのアプリがこの許可を利用しているかは、設定の「他のアプリよりも表示」で確認することができます。

開発者は、ユーザーのアクションがユーザーの完全な知識と同意に基づいて行われることを確認する義務があります。Androidでは、それを実現するための設定をビューに用意しています。 filterTouchesWhenObscured. この設定を有効にすると、ビューのウィンドウが他の可視ウィンドウによって隠された場合、フレームワークは受信したタッチを破棄します。これはとても簡単なことです。 フィルタータッチズウィン・オブスキュア を true に設定すれば、アプリはタップジャッキングから安全になります。

頑張ってください。また来週お会いしましょう

時には、許可要求の承認、購入、広告のクリックなど、ある行為がユーザーの完全な知識と同意に基づいて実行されていることを、アプリケーションが確認することが不可欠な場合があります。残念ながら、悪意のあるアプリケーションは、表示の意図された目的を隠すことで、ユーザになりすまして無意識にこれらのアクションを実行させようとする可能性があります。

https://developer.android.com/reference/android/view/View.html

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。