プロダクト ニュース

Android のセキュリティ強化: マルウェアによるアプリデータのスヌーピングを阻止

2 分で読了

セキュリティは Android の基盤です。Google は、認証情報マネージャーFLAG_SECURE などの強力なセキュリティ ツールと機能を提供することで、プラットフォームの安全性を維持し、ユーザーデータを保護できるよう、デベロッパーの皆様と協力しています。Android のリリースごとにパフォーマンスとセキュリティが強化されています。Android 16 では、アプリの防御を強化するための簡単で重要な手順を実行できます。ユーザー補助 API の保護強化について詳しくは、動画をご覧いただくか、この記事をお読みください。

 

 

1 行のコードでアプリをスヌーピングから保護

悪意のあるユーザーがユーザー補助 API の機能を悪用して、パスワードや財務情報などの機密情報を画面から直接読み取り、タッチ操作を挿入してユーザーのデバイスを操作しようとする事例が確認されています。この問題に対処するため、Android 16 では、1 行のコードaccessibilityDataSensitive)で強力な防御を実現する新しい機能が提供されています。

accessibilityDataSensitive フラグを使用すると、ビューまたはコンポーザブルにセンシティブ データが含まれていることを明示的にマークできます。アプリでこのフラグを true に設定すると、悪意のあるアプリが機密ビューデータにアクセスしたり、機密ビューデータに対して操作を行ったりすることを効果的に阻止できます。仕組みは次のとおりです。ユーザー補助ツールとして明示的に宣言されていない(isAccessibilityTool=true)アプリがユーザー補助権限をリクエストした場合、そのビューへのアクセスは拒否されます。

このシンプルながら効果的な変更により、正規のユーザー補助ツールのユーザー エクスペリエンスに影響を与えることなく、マルウェアによる情報の窃取や不正な操作の実行を防ぐことができます。注: アプリがユーザー補助ツールではないにもかかわらず、ユーザー補助権限をリクエストして isAccessibilityTool=true を設定した場合、Google Play で拒否され、Google Play プロテクトによってユーザーのデバイスでブロックされます。

setFilterTouchesWhenObscured 保護の自動強化

この新しい accessibilityDataSensitive セキュリティ機能は、既存の setFilterTouchesWhenObscured メソッドにすでに統合されています。

タップジャッキングからアプリを保護するために setFilterTouchesWhenObscured(true) をすでに使用している場合、ビューはユーザー補助のセンシティブ データとして自動的に 扱われます。accessibilityDataSensitive 保護によって setFilterTouchesWhenObscured メソッドを強化することで、追加の作業なしで、すべてのユーザーに防御の追加レイヤを提供できます。

image.png

スタートガイド

ログインページ、支払いフロー、個人データや財務データが表示されるビューなど、機密情報を含む画面すべてに setFilterTouchesWhenObscured または accessibilityDataSensitive フラグを使用することをおすすめします。

Jetpack Compose の場合

setFilterTouchesWhenObscuredaccessibilityDataSensitive

 

val composeView = LocalView.current DisposableEffect(Unit) { composeView.filterTouchesWhenObscured = true onDispose { composeView.filterTouchesWhenObscured = false } }

 

semantics 修飾子を使用して、コンポーザブルに sensitiveData プロパティを適用します。

BasicText { text = “Your password”,

            modifier = Modifier.semantics {

                sensitiveData = true }}

 

 

ビューベースのアプリの場合

XML レイアウトで、関連する属性を機密ビューに追加します。

setFilterTouchesWhenObscuredaccessibilityDataSensitive

 

<TextView android:filterTouchesWhenObscured="true" />

 

 

<TextView android:accessibilityDataSensitive="true" />

 

または、Java または Kotlin でプログラムによってプロパティを設定することもできます。

setFilterTouchesWhenObscuredaccessibilityDataSensitive

 

myView.filterTouchesWhenObscured = true;

 

 

myView.isAccessibilityDataSensitive = true;

 

 

myView.setFilterTouchesWhenObscured(true)

 

 

myView.setAccessibilityDataSensitive(true);

 

accessibilityDataSensitive フラグと setFilterTouchesWhenObscured フラグについて詳しくは、タップジャッキング ガイドをご覧ください。

デベロッパーとの連携によるユーザーの安全確保

Google は、この機能が実際のニーズを満たし、ワークフローにスムーズに統合されるように、早い段階からデベロッパーと協力して取り組んできました。

image.png

「当社は常にお客様の機密性の高い財務データの保護を優先しており、ユーザー補助ベースのマルウェアに対する独自の保護レイヤを構築する必要がありました。Revolut は、この新しい公式の Android API の導入を強く支持しています。これにより、カスタムコードから段階的に移行し、堅牢な 1 行のコードによるプラットフォーム防御に移行できます。」
- Vladimir Kozhevnikov(Revolut の Android エンジニア)

これらの機能を導入することで、悪意のあるユーザー補助ベースの攻撃からユーザーを保護するうえで重要な役割を果たすことができます。ユーザーの安全を確保するため、すべてのデベロッパーがこれらの機能をアプリに統合することをおすすめします。

協力して、すべての人にとってより安全で信頼できるエクスペリエンスを構築しましょう。

執筆者:

続きを読む