The majority of Android devices currently in use contain a vulnerability that allows malware to completely hijack installed apps and their data or even the entire device.
The core problem is that Android fails to validate public key infrastructure certificate chains for app digital signatures, said Jeff Forristal, chief technology officer of Bluebox Security, a San Francisco company whose researchers discovered the issue.
According to Google's documentation, Android applications must be signed in order to be installed on the OS, but the digital certificate used to sign them does not need to be issued by a digital certificate authority. "It is perfectly allowable, and typical, for Android applications to use self-signed certificates," the documentation says.
However, Android contains hard-coded certificates from several developers so it can give apps created by those developers special access and privileges inside the OS, Forristal said.
One such certificate belongs to Adobe and gives apps signed by it, or by certificates issued by it, the power to inject code into other installed apps. Forristal believes this behavior exists to allow other apps to use Adobe's Flash Player plug-in.
A typical certificate chain validation process would use cryptography to check the signature relationships between all certificates in the chain. A certificate chain can contain intermediary certificates, so the system would start by validating if the certificate used to sign the app was indeed signed by the next certificate in the chain. Then it would validate whether that certificate was signed by the next one, and so on, until reaching the trusted Adobe certificate.
According to Forristal, Android does not do that, so an attacker can sign a malicious app with a certificate that appears to be signed by the hard-coded Adobe certificate, but actually isn't. As long as the Adobe certificate is present in the app's certificate chain, the system will take code from the app and inject it into other installed apps, Forristal said.
The injected code essentially becomes part of the other apps, inheriting their permissions. It has access to all data stored by those apps, it can see their network traffic and can perform all actions that those apps are authorized to perform on the device, he said.
The attack can only be used to hijack apps that use the WebView component on Android versions older than 4.4, known as KitKat. WebView is a feature commonly used by apps to display Web content using the browser engine built into Android.
In Android KitKat, the WebView component is based on the Chromium open-source browser and no longer supports this plug-in code injection, Forristal said.
Even so, the attack affects a large number of users. According to Google's statistics from the beginning of July, around 88 percent of devices that use Google Play run Android versions older than 4.4.
Sign up for CIO Asia eNewsletters.