Googleは開発者に対し、意図された用途以外でアクセシビリティサービスを使用しないよう警告する電子メールを送信している。そうしないと、開発者のアプリはPlayストアから削除される。
アップデート: LastPass はちょうど 答えた このニュースに対して、同社の Android アプリには「直ちに影響はない」と述べています。 これが他の出願にも寛大な措置が与えられることを意味するかどうかはまだ分からない。
Play ストアの最も革新的なアプリケーションの一部は、Google が意図しない方法で API を使用して構築されています。 音量キーを再マッピングして音楽トラックをスキップしたり、タッチ入力を録音および再生したりできるアプリがあります。 Web ページやゲーム、さらにはデバイス全体を使用できる代替ナビゲーション キーも提供します。 画面。 私が今述べたこれらの例はすべて、Android の Accessibility API に依存しています。 しかし、それはすぐに起こるかもしれない Google Play ストア チームが開発者に変更できる旨のメールを送信しているため、 Google のガイドラインに従わない限り、アクセシビリティ サービスを実装しなくなりました.
アクセシビリティサービスとは何ですか?
これがなぜ重要なのかを理解するには、まず Android に関連したアクセシビリティとは何かを説明する必要があります。 一般に、アクセシビリティとは、視覚障害者など、特定の障害を持つユーザーが Android アプリにアクセスしやすくすることを指します。 障害を持つユーザーにとってアプリをよりアクセシブルにすることはすべての開発者の最大の利益ですが、次のようなことがあります。 ユーザーにとってすべての Android アプリの使いやすさを向上させるように設計された特別なクラスのアプリケーション。 障害。 これらはアクセシビリティ サービスと呼ばれます。
一般に a11y と呼ばれるアクセシビリティ サービスは、システムが内容に応じて特定の情報を供給できるアプリです。 イベント Accessibility Service はリッスンするために登録します。 ユーザー補助サービスを実装したいアプリは、 android.permission.BIND_ACCESSIBILITY_SERVICE
AndroidManifest ファイルへのアクセス許可を付与して、システムのみがアプリのサービスにバインドできるようにします。
たとえば、アクセシビリティ サービスがリッスンするように構築されている場合、 TYPE_VIEW_CLICKED
イベントを受信すると、そのサービスはユーザーが押す可能性のあるボタンに関する情報をシステムから受け取ります。 アクセシビリティ サービスは、他のアプリが受信する前に、特定のジェスチャや KeyEvent に反応してそれらを消費することもできます。 最後に、アクセシビリティ サービスは、「戻る」ボタン、分割画面ボタン、「最近使用したアプリ」ボタンなどの特定の KeyEvent を挿入することもできます。
したがって、アクセシビリティ サービスは次のようになります。 非常に強力で便利な. Google Play ストアで最も人気のある革新的なアプリケーションのいくつかは、その機能を実行するために a11y に依存しています。 以下は、私が思いついたいくつかの例のほんの一部です。
- 自動入力 - KeyEventをインターセプトし、タップ/スワイプジェスチャを実行します
- ボタンマッパー - KeyEvent をインターセプトし、他の KeyEvent に再マップします
- 緑化 - 画面がオフになる前にアプリを強制的に閉じることで、アプリを自動的に休止状態にします
- 入力中+ - キーボードアプリが開いていることを検出して、フローティングアクションボタンを表示します
- ラストパス - ページをスキャンしてユーザー名/パスワードのエントリを確認します (Android Oreo より前に必要)
- 素早く切り替え - 戻るボタンの KeyEvent を送信します
- タスカー - アプリが開いていることを検出して、ユーザー定義のアクションを実行できるようにします
- タイプマシン - すべてのテキスト入力を記録するので、テキスト入力が失われることはありません
これらのアプリケーションはいずれも、障害のあるユーザーを支援するという Google の意図した方法で a11y を使用していません。 アクセシビリティ サービスを実装するアプリケーションの大部分は、Google の管轄外の機能のために実装されていると私は賭けます。 しかし、それが Android とアクセシビリティなどの API の利点です。Google は通常、開発者ができることとできないことを制限しません。 しかし、Google Play のサービス開始に伴い、アクセシビリティ サービスを使用するこの緩いアプローチは変わりつつあるようです。 ストアチームは開発者に、次のポリシーの変更について警告する電子メールを送信しています。 a11y。
Google は具体的に何をしているのでしょうか?
同社は、アプリケーションが障害のあるユーザーの支援以外の理由でアクセシビリティ サービスを使用する場合、開発者に通知しています。 30 日以内にこの権限の使用を削除する必要があります。削除しない場合、アプリケーションは Play ストアから削除されます. この要件に従わない場合、開発者の Play ストア アカウントに対する違反が発生する可能性があります。 最終的にはアカウント停止につながる.
障害を持つユーザーを支援するために a11y を使用している少数のアプリについて、Google は、これらの開発者は次のように述べています。 アプリに 許可。 ただし、前に述べたように、アクセシビリティ サービスは、この新しいポリシーに違反することになるアプリで使用されることがはるかに多くなっています。
開発者に送信された電子メールの全文
**** の開発者の皆様、こんにちは。
パッケージ名 **** のアプリ **** が ' をリクエストしているため、ご連絡しています。android.許可。 BIND_ACCESSIBILITY_SERVICE。」 アクセシビリティ サービスを要求するアプリは、障害を持つユーザーが Android デバイスとアプリを使用できるようにする目的でのみ使用してください。 アプリは次の要件に準拠する必要があります 権限 ポリシーと当社の顕著な開示要件 ユーザーデータ ポリシー。
アクションが必要です: まだ説明していない場合は、アプリが ' をどのように使用しているかをユーザーに説明する必要があります。android.許可。 BIND_ACCESSIBILITY_SERVICE' 障害のあるユーザーが Android デバイスとアプリを使用できるように支援します。 30 日以内にこの要件を満たさないアプリは、Google Play から削除される場合があります。 あるいは、アプリ内のアクセシビリティ サービスに対するリクエストを削除することもできます。 アプリを非公開にすることも選択できます。
アプリに変更を加える必要がある場合は、次の手順に従ってください。
- 通して読んでください 権限 そして ユーザーデータ 詳細についてはポリシーを参照し、アプリがポリシーにリストされているすべてのポリシーに準拠していることを確認してください。 開発者プログラム ポリシー.
- アプリに BIND_ACCESSIBILITY_SERVICE 権限が必要ない場合、または障害を持つユーザーの Android デバイスとアプリの使用を支援すること以外の目的で権限が使用されている場合は、次のようにします。
- この権限に対するリクエストをアプリのマニフェストから削除してください。
- Play Console にサインインする 変更してポリシーに準拠した APK をアップロードします。
- または、障害を持つユーザーが Android デバイスとアプリを使用できるようにするためにアプリで BIND_ACCESSIBILITY_SERVICE 権限が必要な場合は、次のようにします。
- アプリのストア掲載情報の説明に「このアプリはユーザー補助サービスを使用しています。」というスニペットを含めます。
- アプリ内でこの権限を有効にするようユーザーに求める前に、この使用法をユーザーに目立つように開示してください。 開示は次の各要件を満たしている必要があります。
- 開示は次の方法で提供されなければなりません。 アンドロイド:概要 そして アンドロイド: 説明 AccessibilityServiceInfo クラスの要素
- 開示には、アクセシビリティ サービス権限によってアプリに対して有効になっている機能を説明する必要があります。 アクセシビリティ サービス リクエストで使用される各機能は、正当な理由を示して開示の中で宣言する必要があります。
あるいは、アプリを非公開にすることもできます。
すべての違反は追跡されます。 重大な違反または違反が繰り返された場合は、いかなる性質であっても、開発者アカウントが停止され、調査が行われ、関連する Google アカウントが停止される可能性があります。
ポリシーを確認して、私たちが間違っていた可能性があると思われる場合は、弊社までご連絡ください。 政策支援チーム. 同僚の一人が 2 営業日以内にご連絡いたします。
よろしくお願いします。
Google Play レビュー チーム
続きを読む
Google が Play ストアからユーザー補助サービスを削除するのはなぜですか?
アクセシビリティ サービスの使用は かなりの遅延を引き起こすことが知られています、Googleがこれらのアプリの取り締まりを始めている本当の理由は、おそらくa11yを利用したエクスプロイトの問題の増大に関連していると考えられます。 上で述べたアプリは有益な目的で a11y を使用していますが、悪意のある開発者によって邪悪な目的に簡単に悪用される可能性があります。 たとえば、アクセシビリティ サービス キーロガー、ランサムウェア攻撃、またはフィッシングエクスプロイトの実装に使用される可能性があります.
悪意のあるユーザー補助サービスからユーザーを保護するための Google の取り組みは、主に情報開示を中心に展開されてきました。 現在、次のような特定のイベントを登録するアクセシビリティ サービスを有効にしています。 TYPE_VIEW_TEXT_CHANGED
アプリがパスワードを盗む可能性があるという警告ダイアログが表示されます。 このようなメッセージは、ユーザーが無責任にアプリに許可を与えることを防ぐのに効果的であると考えるかもしれません。 ただし、アプリがユーザーをだまして a11y を付与する事例が数多く文書化されています。 一部の攻撃はさらに進んでいます。 マントとダガーのエクスプロイト そして トーストメッセージオーバーレイ攻撃 これは、ユーザーが画面上で操作している内容を偽って、ユーザーに a11y を許可するようにソーシャル エンジニアリングを行います。
このような攻撃は、ほとんどの Android デバイスで有効です。 Google は、オーバーレイまたはトースト メッセージ攻撃の防止において大きな進歩を遂げました (a11y を検索すると AOSP で確認できます)。 しかし事態は、Google がユーザー補助サービスの使用を制限したほうが良いと判断するところまで来ています 全体的に。 それは理にかなっていますが、それは 本当に最低だ なぜなら、この動きにより多くの革新的なアプリの機能が失われるからです。
開発者は何ができるでしょうか?
残念ながら、そこには 開発者ができることはあまりありません こうした変化に対応して。 開発者は、アクセシビリティ サービスを削除することで Google の要求に従うか、アプリが削除されアカウントが停止される可能性があるという脅威に直面するかのどちらかです。 アプリが a11y を使用する理由の開示を追加するだけでは、アプリが障害のあるユーザーを支援することを正当に目的としている場合にのみ機能します。これは、現在 a11y を使用しているほとんどのアプリについては説明されていません。
アクセシビリティ サービスを使用しないようにアプリをリファクタリングすることは、これまでに説明した一部のアプリでは可能ですが、すべてではありません。 LastPass などのパスワード マネージャーは、 自動入力フレームワークに移行するただし、ユーザーが Android 8.0 Oreo 以降を実行している場合に限ります。 アプリが a11y を使用して他のアプリがいつ開いているかを監視する場合、そのアプリは代わりに、UsageStats API を使用してポーリング サービスを作成できます。 Tasker のようなアプリは、そのような変化にも耐えることができます。 Button Mapper や AutoInput などの他の機能は運が悪いです。root がなければ、KeyEvent をインターセプトする良い方法がありません。
悪意のあるアプリに Accessibility API へのアクセスを許可することの危険性は認識していますが、本当に便利なアプリの一部が Google によって排除されるのを見るのは残念です。 私たちは、Google が打ち出したポリシーが撤回されることを願っています。さもなければ、単にそのポリシーが誤解されていたと彼らが主張するだけです。 現状では、メールの文言は非常に明確です。ガイドラインに従うか、Play ストアから離れてください。 これは、Google が Play ストアにどのアプリが属するかについてすべての権限を持っており、いつでもユーザーの下から敷物を引き抜くことができるということを厳粛に思い出させるものです。
更新 1: 紛らわしい開発者ドキュメント
Google の開発者向けドキュメント アクセシビリティサービスの構築 Google Play ストア チームによるこの新たな焦点と矛盾しているようです。 この記事の執筆時点では、このページには次のような文言があります。
アクセシビリティ サービスは、障害のあるユーザー、または一時的にデバイスを完全に操作できないユーザーを支援するためのユーザー インターフェイスの機能強化を提供するアプリケーションです。 たとえば、運転中、幼い子供の世話をしている、または非常に騒がしいパーティーに参加しているユーザーは、追加または代替インターフェイスのフィードバックが必要になる場合があります。
さらに、ページ上の文言を次のように比較すると、 7 月のページのアーカイブ版を参照すると、障害のあるユーザーを支援するためだけにアクセシビリティ サービスを構築することに関するメモが存在しないことがわかります。
João Dias さん、この情報についてご連絡いただきありがとうございます。