2016-05-02 15 views
1

私はPendingIntent.getBroadcast(Context, int, Intent, int)ためdocumentationを見ていたし、それが...セキュリティ上の理由からPendingIntent.getBroadcast()セキュリティ上の懸念?

は、あなたがここで提供する意思がほとんど常に明示的な意図である必要があり、それはに配信される明示的なコンポーネントを指定していることに言及through Intent.setClass

セキュリティ上の理由はなんですか?他のアプリケーションがあなたのパッケージ名とコンポーネントの名前だけを使用しても明示的に作成できる場合、明示的にIntentを安全にするのは何ですか?

NIST.govのPendingIntentベースのsecurity vulnerabilityに関する報告は、Android 4.xのすべてに影響を及ぼし、悪意のあるアプリがインテントをSYSTEMユーザーとして送信する可能性があることがわかりました。しかし、同じ懸念が私のアプリケーションに当てはまるかどうかはわかりません。 Intent場合

BroadcastReceiverによって処理され、(エキストラは、例えば、のように)依然としてリスクがあるIntentは、データを渡すために使用されていませんか?

答えて

2

私の推測では、彼らが本当に何を意味するのかだったということです:セキュリティ上の理由から

、あなたがここに提供意思がほとんど常に非エクスポートコンポーネントを指して、明示的Intentする必要があり、それが指定されIntent.setClassを通じて配信される明示的なコンポーネント

「他のアプリケーションは依然としてパッケージ名とコンポーネントの名前のみを使用して作成できます」という懸念は、コンポーネントがエクスポートされている場合にのみ有効です。 BroadcastReceiverの場合、デフォルトでは<intent-filter>(またはregisterReceiver()で登録した場合はIntentFilter)の場合にのみエクスポートされます。

インテントがBroadcastReceiverによって処理され、インテントがデータを(例えば、エクストラとして)渡すために使用されない場合、リスクはまだありますか?カフオフ

、暗黙のIntentsを使用して2つのリスクがあります。送信側では

  1. は、誰もがあなたのブロードキャストに応答することができます。ブロードキャストの単なる存在はプライバシー/セキュリティのリークではないと思うかもしれませんが、具体的にはリークではないかもしれません—これは普遍的ではありません。受信側では

  2. 、あなたのコンポーネントがエクスポートされている場合(それが暗黙のIntentを扱うことができる場合のデフォルト)、他の当事者は、おそらく不幸な何かをすることにあなたをだまし、あなたに偽のブロードキャストを送信することができます。

関連する問題