- サービスを保護するために追加できる/追加すべきアクセス許可はありますか?
- そうでない場合は、呼び出し元のパッケージ名を確認してサービスを手動で保護することをお勧めしますか?
WearableListenerService
アクセス許可や呼び出し元パッケージのチェックで実装を保護することについて心配する必要はありません。@Wayneが彼の答えで指摘したように:there is a security check that happens in the framework
. このチェックはWearableListenerService
基本クラスで行われます。ウェアラブル SDK の詳細なセキュリティ分析については、
https ://labs.mwrinfosecurity.com/blog/android-wear-security-analysis の記事を参照してください。ここからの引用は次のとおりです。
このメソッドは、pr()
まずcom.google.android.gms
Google が署名しているcU()
かどうかを確認し、次に呼び出しプロセスの UID がパッケージcom.google.android.gms
(Google Play Service パッケージ) のものかどうかを確認するために呼び出します。クラスをさらに逆コンパイルすると、 で公開されている各メソッドでこのセキュリティ チェックが発生することがわかりWearableListenerService
ます。
残念ながら現在、Lint チェッカーは、フィルターが含まれていない場合は常に、ウェアラブル リスナー サービス宣言に対して誤検知の警告を生成しBIND_LISTENER
ます (フィルターを含めると、非推奨になり、回避する必要があるため、別の警告が生成されます)。
エクスポートされたサービスでは、エンティティがサービスを起動またはバインドするために必要なアクセス許可を定義する必要があります。これがなければ、どのアプリケーションでもこのサービスを使用できます。
これは確かにセキュリティ検出コードのバグです (BIND_LISTENER
インテントが非推奨になったときに更新されなかっただけです)。これに関するイシューを Android バグ トラッカーでオープンしました。一方、警告を取り除くには、tools:ignore="ExportedService"
ウェアラブル リスナー サービス宣言に追加する必要があります。