1837
Sticky broadcast intents remain accessible after the initial broadcast. An old sticky intent will be
broadcast again to any new receivers that register for it in the future, greatly increasing the chances
of information exposure over time. Also, sticky broadcasts cannot be protected by permissions that
may apply to other kinds of intents.
In addition, any broadcast intent may include a URI that references data that the receiving
component does not normally have the privileges to access. The sender of the intent can include
special privileges that grant the receiver read or write access to the specific URI included in the
intent. A malicious receiver that intercepts this intent will also gain those privileges and be able to
read or write the resource at the specified URI.
Relationships
The table(s) below shows the weaknesses and high level categories that are related to this
weakness. These relationships are defined as ChildOf, ParentOf, MemberOr and give insight to
similar items that may exist at higher and lower levels of abstraction. In addition, relationships such
as PeerOf and CanAlsoBe are defined to show similar weaknesses that may want to be explored.
Relevant to the view "Research Concepts" (CWE-1000)
Nature Type ID Name Page
ChildOf 668 Exposure of Resource to Wrong Sphere 1469
ChildOf 285 Improper Authorization 684
Applicable Platforms
Language : Not Language-Specific (Prevalence = Undetermined)
Technology : Mobile (Prevalence = Undetermined)
Common Consequences
Scope Impact Likelihood
Confidentiality Read Application Data
Other applications, possibly untrusted, can read the data
that is offered through the Intent.
Integrity Varies by Context
The application may handle responses from untrusted
applications on the device, which could cause it to perform
unexpected or unauthorized actions.
Detection Methods
Automated Static Analysis
Automated static analysis, commonly referred to as Static Application Security Testing (SAST),
can find some instances of this weakness by analyzing source code (or binary/compiled code)
without having to execute it. Typically, this is done by building a model of data flow and control
flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input)
with "sinks" (destinations where the data interacts with external components, a lower layer such
as the OS, etc.)
Effectiveness = High
Potential Mitigations
Phase: Implementation
If the application only requires communication with its own components, then the destination is
always known, and an explicit intent could be used.
Demonstrative Examples
Example 1:
CWE Version 4.14
CWE-927: Use of Implicit Intent for Sensitive Communication
CWE-927: Use of Implicit Intent for Sensitive Communication