A five-month-old flaw in Android's SSL cryptographic libraries is among the 35 critical vulnerabilities Google fixed in its March security patches for the mobile OS.
The first set of patches, known as patch level 2017-03-01, is common to all patched phones and contains fixes for 36 vulnerabilities, 11 of which are rated critical and 15 high. Android vulnerabilities rated critical are those that can be exploited to execute malicious code in the context of a privileged process or the kernel, potentially leading to a full device compromise.
One of the patched vulnerabilities is located in the OpenSSL cryptographic library and also affects Google's newer BoringSSL library, which is based on OpenSSL. What's interesting is that the flaw, identified as CVE-2016-2182, was patched in OpenSSL back in September. It can be exploited by forcing the library to process an overly large certificate or certificate revocation list from an untrusted source.
It's unclear why Google has waited for almost six months to fix this vulnerability in Android. The OpenSSL developers have rated the flaw as low severity and noted in their advisory that it doesn't affect TLS connections because "record limits will reject an oversized certificate before it is parsed."
Meanwhile Google rates the flaw as critical and says that an attacker using a specially crafted file can cause memory corruption during file and data processing and execute malicious code within the context of a privileged process.
Nine critical vulnerabilities were patched in mediaserver, an Android component responsible for processing media files that has been the source of many flaws over the past two years. These vulnerabilities can potentially be exploited remotely.
Finally, one critical vulnerability was fixed in the recovery verifier component. This can be exploited locally to elevate one's privileges and execute arbitrary code inside the kernel, leading to a permanent device compromise.
As it has done since July, Google has split its monthly Android fixes into two separate batches identified by different security patch levels. These levels are expressed as a date string in Android's settings under "About phone" and indicate that the firmware contains all Android security patches up to that date.
Which fixes a phone gets within a patch level depends on the version of Android it is running. Some of the latest fixes, including that for OpenSSL, apply to phones running versions of Android as far back as 4.4.4 (KitKat); others are only for Android 7.1.1, the latest tweak of Nougat.
The reason for splitting security updates into different patch levels is to differentiate between vulnerabilities in Android software components common to all phones and those that only affect phones with certain hardware components for which chipset makers have provided custom drivers.
The second patch level for March, 2017-03-05, covers 24 critical vulnerabilities in drivers and components from MediaTek, Nvidia, Broadcom and Qualcomm, as well as in various kernel subsystems. In addition, this patch level fixes 32 high-rated vulnerabilities, 14 moderate ones and one low risk flaw.
Only the phones that contain the vulnerable drivers need to apply these patches, so not all devices will end up with the 2017-03-05 patch level.