Android is an open source Linux based software stack created for a wide array of devices and form factors. 1
The following diagram shows the major components of the Android platform. The foundation of the Android 2
platform is the Linux kernel for example the android runtime ART relies on the Linux kernel for 3
underlying functionalities such as threading and low level memory management. 4
The hardware abstraction layer AGL provides standard interfaces that expose device hardware capabilities 5
to the higher level Java API framework. For devices running Android version 5.0 API level twenty one 6
or higher. 7
Each app runs on its own process and with its own instance of the Android runtime ART. 8
Prior to Android version 5.0 API level twenty one Dalvik was the android runtime if your app runs well 9
on ART then it should work on Dalvik as well. 10
But the reverse may not be true. Many core Android system components and services such as ART and 11
HAL are built from native code that require native libraries written in C and C++ if you are developing 12
an app that requires C or C++ code you can use the Android NDK to access some of these native platform 13
libraries directly from your native code. 14
The entire feature set of the Android OS is available to you through APIs written in the Java language 15
these APIs form the building blocks you need to create Android apps. 16
Developers have full access to the same framework APIs that Android system apps use. Android comes 17
with a set of core apps for email sms messaging calendars Internet browsing contacts and more 18
Apps included with the platform have no special status among the apps the user chooses to install. 19
So a third party app can become the user's default web browser, 20
Sms messenger or even the default keyboard. Android package APK is the package file format used 21
by the Android operating system for distribution and installation of mobile apps. An APK file is an 22
archive that usually contains the following files and directories META INF is a directory containing 23
the manifest file the app's certificate and the list of resources and an SHA1 digest of the 24
corresponding lines in the manifest file resources is a file containing pre compiled resources 25
such as binary XML classes dot decks contains the classes compiled in the dex file format which is 26
understandable by the Dalvik virtual machine and by the Android runtime. RES is the directory containing 27
resources not compiled into resources .ARSE. Android manifest .XML is an additional Android manifest 28
file describing the name, version, access rights and reference library files for the application. 29
You may also have a lib directory containing the platform dependent compiled code and an assets directory 30
containing application assets. The Android platform takes advantage of the Linux user based protection 31
to identify and isolate app resources. 32
This isolates apps from each other and protects apps and the system from malicious apps. 33
To do this android assigns a unique user ID, UID to each Android application and runs it in its 34
own process. 35
Android uses the UID to set up a kernel level application sandbox the kernel enforces security between 36
apps and the system at the process level through standard Linux facilities such as user and group IDS 37
that are assigned to apps by default apps can't interact with each other and have limited access to 38
the OS. 39
If app a tries to do something malicious such as read application B's data or dial the phone without 40
permission is prevented from doing so because it doesn't have the appropriate default user privileges. 41
The purpose of a permission is to protect the privacy of an Android user. 42
Android apps must request permission to access sensitive user data such as contacts and SMS 43
as well as certain system features such as camera and Internet. Depending on the feature, 44
the system might grant the permission automatically or might prompt the user to approve the request. 45
Between application sandboxing and permissions, 46
the OS is ensuring that apps can only perform the sensitive operations that they are explicitly allowed to 47
If you are interested in knowing more about the Android security model we recommend this white paper 48
that was recently released by Google. 49
The paper aims to both document the Android security model and discuss its implications. Google Play 50
protect is Google's built in malware protection for Android it automatically scans your device and make 51
sure you have the latest in mobile security. All Android apps undergo rigorous security testing before 52
appearing in the Google Play Store. Google vets every app and developer in Google Play and suspends those 53
who violate their policies. 54
Play protect scans billions of apps daily to make sure everything is secure. That way when you download 55
an app from the official Play Store. 56
You know it's been checked by Google Play Protect. 57
That being said as we have seen in the past malware is still able to make its way onto the play store. 58
However when opting to download from the official store or an unregulated third party store we always 59
recommend to stick to the official store. 60
That being said one can also install non play store apps by enabling a simple feature. 61
This practice is called side loading when you allow any application to be side loaded on your phone. 62
You're bypassing the security protocols that are enabled in the Play Store i.e. what Google does behind 63
the scenes to make sure all the apps you install from the official channels are safe. 64
However there are reasons legitimate or not that caused people to side load. 65
For example when apps are blocked for your specific device when apps are not available in your country 66
when apps are banned from the official store, in order to download a paid app for free which may be illegal 67
in order to obtain an ad free version of an app which may also be illegal, for app development testing 68
and when developing a custom private app. 69
Finally we would like to discuss an issue that seems to plague the Android OS and that is the issue 70
of fragmentation. When creating an Android app. 71
you'll be asked for the minimum OS version that your app should support. 72
Choosing a newer minimum version will usually mean that your app will be supported by fewer Android 73
devices. 74
The dashboard shows the percentage of Android devices that are running each OS version and lower. 75
For example here we see that at the time of this report Android 10 was the latest available release 76
version. However Android 10 had only eight point two percent of the distribution. 77
The bigger the jump in the cumulative distribution the higher the number of Android devices running 78
that specific version. 79
For example the difference between Nougat and Marshmallow is eighty four point nine minus seventy three 80
point seven which equals eleven point two percent. 81
This means that at this point there were eleven point two percent of Android devices still running Android Nougat. 82
Some of these percentages seem small but when you consider the billions of Android devices that 83
are out there in the world 1 percent of all Android devices is very significant. Imagine you have a vulnerability 84
against one specific version that only has 1 percent distribution. 85
You cannot simply omit this as an issue since this vulnerability might still be impacting millions of 86
devices. 87
You may find many of these old versions are not necessarily on smartphones but rather may be on televisions 88
or cars for example. 89
That being said many of these devices are still connected to the Internet. 90
So this is something that's significant and something we have to consider especially in Android security. 91
You may even come across cases where for example a malware author designed malware exploiting a vulnerability 92
for older Android versions and actually checking the version number of the device before triggering 93
the attack. 94
For example the code would say is Android version older than Android 5. 95
If so then launch an attack using some old vulnerability that they found.