The Android security team is responsible for managing security vulnerabilities discovered in the Android platform and many of the core Android apps bundled with Android devices.
The Android security team finds security vulnerabilities through internal research and also responds to bugs reported by third parties. Sources of external bugs include issues reported through the Android Security Issue template, published and prepublished academic research, upstream open source project maintainers, notifications from our device manufacturer partners, and publicly disclosed issues posted on blogs or social media.
Reporting security issues
Any developer, Android user, or security researcher can notify the Android security team of potential security issues through the security vulnerability reporting form.
Bugs marked as security issues aren't externally visible, but they may eventually be made visible after the issue is evaluated or resolved. If you plan to submit a patch or Compatibility Test Suite (CTS) test to resolve a security issue, please attach it to the bug report and wait for a response before uploading the code to AOSP.
The first task in handling a security vulnerability is to identify the severity of the bug and which component of Android is affected. The severity determines how the issue is prioritized, and the component determines who fixes the bug, who is notified, and how the fix gets deployed to users.
This table covers the definitions of process types. The process type can be defined by the type of app or process or the area in which it runs. This table is ordered from least to most privileged.
|Process type||Type definition|
|Constrained process||A process that runs in a highly limited SELinux domain.
A process that's significantly more limited than a normal app.
|Unprivileged process||An application or process that runs in an SELinux domain with
|Privileged process||An app or process with capabilities that would be forbidden by
An app or process with important privileges that a third-party app can't obtain.
A built-in hardware component on the device that isn't part of the trusted computing base (TCB).
|Trusted computing base (TCB)||Functionality that's part of the kernel, runs in the same CPU context as
the kernel (such as device drivers), has direct access to kernel memory
(such as hardware components on the device), has the capability to load
scripts into a kernel component (for example, eBPF), the Baseband Processor,
or is one of a handful of user services that is considered kernel equivalent:
|Bootloader||A component that configures the device on boot and then passes control to the Android OS.|
|Trusted Execution Environment (TEE)||A component that is designed to be protected from even a hostile kernel (for example, TrustZone and Hypervisor).|
|Secure element (SE)||An optional component designed to be protected from all other components on the device and from physical attack, as defined in Introduction to Secure Elements.|
The severity of a bug generally reflects the potential harm that could occur if a bug was successfully exploited. Use the following criteria to determine the severity.
|Rating||Consequence of successful exploitation|
|Negligible Security Impact (NSI)||
While the severity of security vulnerabilities is often easy to identify, ratings may change based on circumstances.
|Requires running as a privileged process to execute the attack||-1 Severity|
|Vulnerability-specific details limit the impact of the issue||-1 Severity|
|Biometric authentication bypass that requires biometric information directly from the device owner||-1 Severity|
|Compiler or platform configurations mitigate a vulnerability in the source code||Moderate Severity if the underlying vulnerability is Moderate or higher|
|Requires physical access to device internals and is still possible if the phone is off or hasn't been unlocked since being powered on||-1 Severity|
|Requires physical access to device internals while the phone is on and has previously been unlocked||-2 Severity|
|A local attack that requires the bootloader to be unlocked||No higher than Low|
|A local attack that requires Developer Mode or any persistent developer mode settings to be currently enabled on the device (and isn't a bug in Developer Mode itself).||No higher than Low|
|If no SELinux domain can conduct the operation under the Google-provided SEPolicy||Negligible Security Impact|
Local versus Proximal versus Remote
A remote attack vector indicates that the bug can be exploited without installing an app or without physical access to a device. This includes bugs that can be triggered by browsing to a web page, reading an email, receiving an SMS message, or connecting to a hostile network. For the purpose of our severity ratings, the Android security team also considers "proximal" attack vectors as remote. These include bugs that can be exploited only by an attacker who is physically near the target device, for example, a bug that requires sending malformed Wi-Fi or Bluetooth packets. The Android security team considers NFC-based attacks as proximal and therefore remote.
Local attacks require the victim to run an app, either by installing and running an app or by consenting to run an Instant App. For the purpose of severity ratings, the Android security team also considers physical attack vectors as local. These include bugs that can be exploited only by an attacker who has physical access to the device, for example a bug in a lock screen or one that requires plugging in a USB cable. Note that attacks that require a USB connection are the same severity regardless of whether the device is required to be unlocked or not; it's common for devices to be unlocked while plugged into USB.
Android assumes that all networks are hostile and could be injecting attacks or spying on traffic. While link-layer security (for example, Wi-Fi encryption) secures communication between a device and the Wi-Fi Access Point it's connected to, it does nothing to secure the remaining links in the chain between the device and the servers it's communicating with.
By contrast, HTTPS typically protects the entire communication end to end, encrypting the data at its source, then decrypting and verifying it only once it's reached its final destination. Because of this, vulnerabilities that compromise Wi-Fi security are rated less severe than vulnerabilities in HTTPS/TLS: Wi-Fi encryption alone is insufficient for most communication on the internet.
Biometric authentication is a challenging space, and even the best systems can be fooled by a near-match. These severity ratings distinguish between two classes of attacks and are intended to reflect the actual risk to the end user.
The first class of attacks allows bypassing biometric authentication in a generalizable way, without high quality biometric data from the owner. If, for instance, an attacker can place a piece of gum on a fingerprint sensor, and it grants access to the device based on residue left on the sensor, that's a simple attack that could be performed on any susceptible device. It doesn't require any knowledge of the device's owner. Given that it's generalizable and potentially impacts a larger number of users, this attack receives the full severity rating (for example, High, for a Lockscreen bypass).
The other class of attacks generally involves a presentation attack instrument (spoof) based on the device owner. Sometimes this biometric information is relatively easy to get (for example, if someone's profile picture on social media is sufficient to fool biometric auth, then a biometric bypass would receive the full severity rating). But if an attacker would need to acquire biometric data directly from the device owner (for example, an infrared scan of their face), that's a significant enough barrier that it limits the number of people affected by the attack, so there's a -1 modifier.
The development team responsible for fixing the bug depends on which component the bug is in. It could be a core component of the Android platform, a kernel driver supplied by an original equipment manufacturer (OEM), or one of the preloaded apps on Pixel devices.
Bugs in AOSP code are fixed by the Android engineering team. Low-severity bugs, bugs in certain components, or bugs that are already publicly known may be fixed directly in the publicly available AOSP master branch; otherwise they're fixed in our internal repositories first.
The component is also a factor in how users get updates. A bug in the framework or kernel requires an over-the-air (OTA) firmware update that each OEM needs to push. A bug in an app or library published in Google Play (for example, Gmail, Google Play Services, or WebView) can be sent to Android users as an update from Google Play.
When a security vulnerability in AOSP is fixed in an Android Security Bulletin, we'll notify Android partners of issue details and provide patches. The list of backport-supported versions changes with each new Android release. Contact your device manufacturer for the list of supported devices.
Releasing code to AOSP
If the security bug is in an AOSP component, the fix is pushed out to AOSP after the OTA is released to users. Fixes for low-severity issues may be submitted directly to the AOSP master branch before a fix is available to devices through an OTA.
Receiving Android updates
Updates to the Android system are generally delivered to devices through OTA update packages. These updates may come from the OEM who produced the device or the carrier who provides service to the device. Google Pixel device updates come from the Google Pixel team after going through a carrier technical acceptance (TA) testing procedure. Google also publishes Pixel factory images that can be side-loaded to devices.
Updating Google services
In addition to providing patches for security bugs, the Android security team reviews security bugs to determine if there are other ways to protect users. For example, Google Play scans all apps and removes any app that attempts to exploit a security bug. For apps installed from outside of Google Play, devices with Google Play Services may also use the Verify Apps feature to warn users about apps that may be potentially harmful.
Information for Android app developers: https://developer.android.com
Security information exists throughout the Android Open Source and Developer sites. Good places to start:
Sometimes the Android Security team publishes reports or whitepapers. See Security Reports for more details.