Android apps with millions of downloads exposed to high-severity vulnerabilities
By
Microsoft 365 Defender
Research Team
May 31, 2022
As it is with many of
pre-installed or default
applications that most
Android devices come with
these days, some of the
affected apps cannot be
fully uninstalled or
disabled without gaining
root access to the device.
We worked with
mce Systems,
the developer of the
framework, and the affected
mobile service providers to
solve these issues. We
commend the quick and
professional resolution from
the mce Systems engineering
teams, as well as the
relevant providers in fixing
each of these issues,
ensuring that users can
continue using such a
crucial framework.
Collaboration among security
researchers, software
vendors, and the security
community is important to
continuously improve
defenses for the larger
ecosystem. As the threat and
computing landscape
continues to evolve,
vulnerability discoveries,
coordinated response, and
other forms of threat
intelligence sharing are
paramount to protecting
customers against present
and future threats,
regardless of the platform
or device they are using.
Our research on the
framework vulnerabilities
began while trying to better
understand how a
pre-installed System
application could affect the
overall security of mobile
devices. We discovered that
the framework, which is used
by numerous apps, had a
“BROWSABLE” service activity
that an attacker could
remotely invoke to exploit
several vulnerabilities that
could allow adversaries to
implant a persistent
backdoor or take substantial
control over the device.
The framework seemed to be
designed to offer
self-diagnostic mechanisms
to identify and resolve
issues impacting the Android
device, indicating its
permissions were inherently
broad with access to
valuable resources. For
example, the framework was
authorized to access system
resources and perform
system-related tasks, like
adjusting the device’s
audio, camera, power, and
storage controls. Moreover,
we found that the framework
was being used by default
system applications to
leverage its self-diagnostic
capabilities, demonstrating
that the affiliated apps
also included extensive
device privileges that could
be exploited via the
vulnerable framework.
According to mce Systems,
some of these
vulnerabilities also
affected other apps on both
Android and iOS devices.
Moreover, the vulnerable
framework and affiliated
apps were found on devices
from large international
mobile service providers.
mce Systems, which offers
“Mobile Device Lifecycle and
Automation Technologies,”
also permitted providers to
customize and brand their
respective mobile apps and
frameworks. Pre-installed
frameworks and mobile apps
such as mce Systems’ are
beneficial to users and
providers in areas like
simplifying the device
activation process,
troubleshooting device
issues, and optimizing
performance. However, their
extensive control over the
device to deliver these
kinds of services could also
make them an attractive
target for attackers.
Our analysis further found
that the apps were embedded
in the devices’ system
image, suggesting that they
were default applications
installed by phone
providers. All of the apps
are available on the Google
Play Store where they go
through Google Play
Protect’s automatic safety
checks, but these checks
previously did not scan for
these types of issues. As
part of our effort to help
ensure broad protection
against these issues, we
shared our research with
Google, and Google Play
Protect now identifies these
types of vulnerabilities.
We initially discovered the
vulnerabilities in September
2021 and shared our findings
with mce Systems and
affected mobile service
providers through
Coordinated Vulnerability
Disclosure
(CVD) via
Microsoft Security
Vulnerability Research
(MSVR). We worked closely
with mce Systems’ security
and engineering teams to
mitigate these
vulnerabilities, which
included mce Systems sending
an urgent framework update
to the impacted providers
and releasing fixes for the
issues. At the time of
publication, there have been
no reported signs of these
vulnerabilities being
exploited in the wild.
The high-severity
vulnerabilities, which have
a Common Vulnerability
Scoring System (CVSS) score
of 7.0-8.9, are now
identified as
CVE-2021-42598,
CVE-2021-42599,
CVE-2021-42600,
and
CVE-2021-42601.
We want to thank mce
Systems’ engineering teams
for collaborating quickly
and efficiently in resolving
these issues as well as to
AT&T for proactively working
with Microsoft to ensure
customers can safely
continue to use the
framework.
Several other mobile service
providers were found using
the vulnerable framework
with their respective apps,
suggesting that there could
be additional providers
still undiscovered that may
be impacted. The affected
providers linked below have
made updated app versions
available to users before
this disclosure, ensuring
devices can be protected
before these vulnerabilities
could be exploited. We
encourage these providers’
customers to update to the
latest versions of these
apps from the Google Play
store, which include but are
not limited to:
com.telus.checkup,
com.att.dh,
com.fivemobile.myaccount,
com.freedom.mlp,uat,
and
com.ca.bell.contenttransfer.
Additionally, the package
com.mce.mceiotraceagent
might be installed by
several mobile phone repair
shops. Mobile users are
advised to look for that app
name and remove it from
their phone, if found.
When analyzing an Android
application, the first thing
that comes to mind is
checking its manifest,
maintained under the
AndroidManifest.xml
file. The manifest describes
the application itself and
its components, such as the
following:
Checking the manifest of an
app affiliated with mce
Systems’ framework shed
light on some of its
features and capabilities
but did not immediately
indicate that any
vulnerabilities or security
issues were present.
Therefore, further research
into the app’s functionality
was needed by understanding
its permissions.
Analysis of the app’s
permissions on the mobile
device revealed
authorizations that could
lead to powerful access and
capabilities for an
attacker. Those permissions
included control over the
following:
With access to these
valuable resources, the app
could be abused by an
attacker to implant a
persistent backdoor on the
device.
The “Activities” section of
the app’s manifest detailed
that the Intent-filter
element included activities
with a “BROWSABLE” category.
While most Intents do not
require a category, category
strings detail the
components that should
handle the Intent. In
particular, the BROWSABLE
category allows the target
Activity to be triggered
from a web browser to
display data referenced by a
link, like an image.
BROWSABLE activities appeal
to attackers as the latter
can exploit them via
malicious web pages and
other Intent-based attacks.
The Intent-filter element in
the manifest dictates how
the Activity can be
triggered. In the app’s
case, the Activity could
be triggered by simply
clicking a link with the “mcedigital://”
scheme. This would start the
com.mce.sdk.AppActivity
Activity with an Intent with
arbitrary data (besides the
scheme).
We reviewed the effects of
triggering the
com.mce.sdk.AppActivity.
Also known as appActivity,
this Activity refers to the
different functionalities
provided by the app.
AppActivity extends Activity
and therefore has an
onCreate method, which
traditionally handles the
creating Intent.
Here’s a brief description
of AppActivity:
Thus, if a user clicks this:
The App’s WebView loads the
following web page:
The app’s index.html
web page (which is an asset
built into the Android app)
loads two JavaScript files:
Since we wanted to
understand the interplay
between bundle.js
(JarvisJSInterface) and the
WebView (JarvisWebView), we
analyzed both.
The main features of the
WebView, JarvisWebView
class, are the following:
A JavaScript Interface is a
conspicuous target to look
for security issues, as it
uses a JavaScript Bridge to
allow invoking specific
methods inside an Android
app. In the case of
JarvisJSInterface, three
methods are exported:
The request method
is by far the most
interesting, as it performs
the following:
The serviceCall is
a powerful method, as it
allows the WebView to invoke
“services” freely. But what
are these services, exactly?
After we examined the
services offered by this
framework per the app
manifest, we then obtained a
list of services that
practically give the WebView
complete control over the
device. The most notable
services include:
These services inherit from
a base class named “Service”
and implement two methods:
For example, here is the
Camera service setting
its methods:
Based on our analysis of the
mce framework, we discovered
several vulnerabilities. It
should be noted that while
mobile service providers can
customize their apps
respective to mce framework
so as not to be identical,
the vulnerabilities we
discovered can all be
exploited in the same
manner—by injecting code
into the web view.
Nonetheless, as their apps
and framework customization
use different configurations
and versions, not all
providers are necessarily
vulnerable to all the
discovered vulnerabilities.
We found a command-injection
vulnerability, tracked as
CVE-2021-42599, in the
Device service
mentioned in the previous
section. This service offers
rich functionality,
including the capability to
stop activities of a given
package. The client fully
controls the argument
“value,” and simply runs the
following command:
Since the argument is not
sanitized, an attacker could
add backticks or quotation
marks to run arbitrary code,
like the following:
According to mce Systems,
they have since removed the
functionality behind this
vulnerability and it is no
longer present in more
advanced framework versions.
The services offered by the
mce framework further
indicated that the following
vulnerability resided in the
logic of the JavaScript
client for apps that are
configured to enable
plaintext communications
such as the app that we
initially analyzed.
Interestingly, the code for
the client is a
heavily-obfuscated dynamic
JavaScript code that is
implemented over several
files, mainly bundle.js.
Due to the blind trust
between the JavaScript
client and the
JarvisJSInterface
server, an attacker who
could inject JavaScript
contents into the WebView
would inherit the
permissions that the app
already has.
We conceived two injection
strategies most likely to be
leveraged by attackers:
Once we reverse-engineered
the client’s obfuscated
code, we discovered that it
could not inject JavaScript
from the GET parameters. The
only capability permitted
was to affect some of the
client’s self-tests upon
initialization, such as a
battery-draining test or a
Wi-Fi connectivity test.
However, the WebView-fetched
plaintext pages that we
discovered could be injected
into with a PiTM attack.
Our proof-of-concept (POC)
exploit code was therefore:
Some of the apps we analyzed
did not pull plaintext
pages. Thus, we looked for a
local elevation of privilege
vulnerability, allowing a
malicious app to gain the
system apps’ privileges,
tracked as CVE-2021-42601.
In the apps mentioned above,
we discovered that the main
Activity attempted to handle
a deep link (a link that
launches an app instead of a
browser on click) with
Google Firebase.
Interestingly, this
deep-link handling tried to
deserialize a structure
called
PendingDynamicLinkData
(representing a link) from
an Intent Extra byte array
with the key
com.google.firebase.dynamiclinks.DYNAMIC_LINK_DATA.
This structure was used
later by the mce framework
to generate various JSON
Objects that might contain
data from a categoryId
query parameter in the
original link, and
eventually ended up in the
member mFlowSDKInput
to be injected into the
JarvisWebView instance in an
unsafe way:
Since the categoryId
query parameter might
contain apostrophes, one
could inject arbitrary
JavaScript code into the
WebView. We decided to
inject a code that would
reach out to a server and
load a second-stage code,
which was the exact one we
used for our PiTM scenario.
We worked closely with the
mce Systems engineering team
and discovered that the
reason for unsafe loadUrl
invocations with JavaScript
injections was that the
framework used an
asynchronous model of
operation. When the
JavaScript client performs a
request, it expects to be
notified later when there
are results. Since Android
JavaScript Bridge only
allows primitive types to be
sent (for example, Strings),
the mce framework notified
the JavaScript client by
injecting JavaScript with
potentially unsafe arguments
(the results themselves).
We offered mce Systems a
slightly different software
design that prevents unsafe
JavaScript injection. The
description of the flow of
information in our proposal
is as follows:
This way, the JavaScript
client does not need to poll
for asynchronous results
while data is safely
transferred between the
client and the server.
Interestingly, Google
AndroidX
offers a very similar API:
webMessageListener.
While the said API works
quite similarly to our
suggestion, it only supports
Android versions greater
than Lollipop. Thus, the new
mce framework now checks the
Android version and uses
this new Google API if
supported or our offered
solution for older devices.
The above is just one
example of our collaboration
to help secure our
cross-platform ecosystem.
According to mce Systems,
all of our reported
vulnerabilities were
addressed.
Microsoft strives to
continuously improve
security by collaborating
with customers, partners,
and industry experts.
Responding to the evolving
threat landscape requires us
to expand our capabilities
into other devices and
non-Windows platforms in
addition to further
coordinating research and
threat intelligence sharing
among the larger security
community. This case
highlighted the need for
expert, cross-industry
collaboration to effectively
mitigate issues.
Moreover,
collaborative research such
as this informs our seamless
protection capabilities
across platforms. For
example, intelligence from
this analysis helped us
ensure that
Microsoft Defender
Vulnerability Management
can identify and remediate
devices that have these
vulnerabilities, providing
security operations teams
with comprehensive
visibility into their
organizational exposure and
enabling them to reduce the
attack surface. In addition,
while we’re not aware of any
active exploitation of these
mobile vulnerabilities in
the wild, Microsoft Defender
for Endpoint’s
mobile threat defense
capabilities significantly
improve security on mobile
devices by detecting
potential exploits, malware,
and post-exploitation
activity.
We will continue to work
with the security community
to share intelligence about
threats and build better
protection for all.
Microsoft security
researchers continually work
to discover new
vulnerabilities and threats,
turning a variety of
wide-reaching issues into
tangible results and
improved solutions that
protect users and
organizations across
platforms every single day.
Similarly inquisitive
individuals are encouraged
to check opportunities to
join the Microsoft research
team here:
https://careers.microsoft.com/.
|
Terms of Use | Copyright © 2002 - 2022 CONSTITUENTWORKS SM CORPORATION. All rights reserved. | Privacy Statement