Qiu0開発者は、さまざまな脅威をもたらす経路を生み出すために、ソーシャルエンジニアリングの手口を駆使します。特別に細工された「トースト通知」と呼ばれるアプリのポップアップウィンドウをタップさせるようユーザに促すアプリを作成することができます。Interaction(UI)」のコンポーネントに存在する特定の脆弱性を利用します。この手法は、それほど複雑なものではありませんが、Android端末を使用するユーザーにとって深刻なセキュリティ上の影響を与えます。脆弱性がどのようにして起こるのかについて簡潔に説明します。アクティビティとは、画面全体を使用し、異なる複数の画面を持つことができ、端末の画面における長方形の部分に表示されるシステムのコンポーネントです。以下は、2つのビューを含むアクティビティの例です。1つは、ユーザが文字を符号化できる「テキストビュー」と呼ばれるビューで、もう1つは、ユーザがクリック(またはタップ)するボタンです。以下の図1のとおり、アクティビティは、大部分が空欄または空白であっても、全画面に表示されます。アクティビティのスクリーンショットです(註:本ブログで使用している画像は、不正なアプリのものではありません)。要素を表す各活動を行うさまざまなアクティビティを備えています。オペレーティングシステム(OS)は、スタックと呼ばれるデータ構造を用いて異なるアクティビティを管理しています。最新のアクティビティはスタックの上に表示され、古いものは下に置かれます。現在表示されているアクティビティは、常に画面の一番上に表示され、ユーザのタップやスワイプに反応可能な唯一のアクティビティです。画面を表示するよう設計されています。これには例外があり、アプリケーションは、場合によってアクティビティ内にビューを配置することなくビューを表示することができます。この例外に該当するのは、「ダイアログ通知」およびトースト通知です。■ダイアログ通知とトースト通知の違いダイアログ通知は、主にユーザとアプリケーションがやりとりを行うために使用されます。ダイアログは、双方向のやりとりであり、ユーザにいくつかの情報を表示し、ユーザはテキストの符号化またはボタンなどのウィジェットのクリックを行うことで応答します。ダイアログ通知は、一時的に表示されるため、できるだけ小さく設計されており、ユーザは依然として何が背景にあるかを確認することができます。ユーザは、ダイアログの背後のアクティビティとやりとりすることができません。図2:ダイアログ通知しかし、さらに興味深いのは、トースト通知です。トーストは、Android端末では、「小さなポップアップ内で操作に関する簡単なフィードバック」と規定されています。通常、トースト通知は、文章に必要な部分しか表示しておらず、ユーザは、依然として背後にあるアクティビティとやりとりが行えます。以下の図3は、トースト通知の例です。図3:トースト通知トースト通知は、アプリおよび開発者によっては上記図3のような簡潔な情報を表示する場合もありますが、その大きさは固定されているわけではありません。開発者は、自身のアプリに、より大きくトーストを表示したり、以下の図4のように画像を含めたりと自由に設計することができます。図4:画像を含むトースト通知そして、この部分がトースト通知の興味深い所なのです。ビュー内に任意の画像を表示する機能は、多くの可能性をもたらすことができます。削除といったさまざまな脅威がもたらされる可能性があります。トーストを利用し、ユーザにタップを促すためには、問題があります。通常、トースト通知は、簡単な設計しかされておらず、わずか数秒間しか表示されない場合があります。トースト通知を攻撃として効果的に利用するためには、わずか数秒ではなく、長い時間、画面に表示させておく必要があります。これは難しい問題であるかのように思えるかもしれませんが、完全に回避できない問題というわけではありません。不正な開発者は、タイマーを利用し、この制限を回避することができます。SDK」で提供されています。不正な開発者は、ビューが画面上から消える前に再び表示されるようにタイマーを利用することができます。悪意あるアプリは、タップジャックの手口としてのみ利用され、このアプリ自体は不正活動を行わないため、端末から任意のアクセス許可を取得する必要はありません。問題のアプリは、単にこれらの画面を表示するのみでそれ以上のことは行わないため、静寂コード解析だけではこのアプリを不正プログラムとして分類することが難しく、セキュリティ専門家やセキュリティソフトにとって課題となります。Android端末に影響を与えます。別のビューに隠れた際にやりとりのイベントを阻止する機能で、開発者がこの不具合に対処できる対応策を提供しており、これによってユーザが隠されたビューとやりとりしてしまう可能性を取り除きます。この新しい機能は、プロパティ「filterTouchesWhenObscured」を適切に設定するか、メソッド「onFilterTouchEventForSecurity」を実行するかの2つの手法のうちどちらか一方を行うことで使用することができます。この機能は、開発者が正確にコードを変更しなければなりませんが、すべての開発者がこの機能を知っているわけではありません。アプリケーションの両方を最新のバージョンに更新しておく必要があります。タップジャッキングの脅威は、無関係なことではなく、長い間存在する可能性があるのです。