Вы находитесь на странице: 1из 28

Mobile Application Security on Android

Originally presented by Jesse Burns at Black Hat 2009

What is Android?
Smart Phone Operating System Based on the Linux kernel Expanded to support cellular based communication

GSM, CMDA

Java like middleware

More Android

Open Source
Mostly Apache v2 license
Linux kernel is GPLv2

Free Open APIs

If Google uses them, so can developers

Applications

Built from for components


Activity
Service Content Provider Broadcast Receiver

Run in own VM sandbox using unique UID

More on Apps
Use explicitly defined permissions Communicate through Intents Intents are Inter-Process Communications Applications register which Intents they wish to handle

Signatures

applications must be signed, but are usually self-signed


proves no relationship with Google, but creates chain of trust between updates and

among applications

Permissions I
>100 defined by the system Declared at install time in Manifest.xml Disclosed by PackageInstaller, protected by root ownership

Permissions II

applications can define arbitrary new perms


normal dangerous signature signatureOrSystem

Permission III
Permissions checked at runtime SecurityException thrown if permission denied

Intents
Core of Android IPC Can cross security boundaries Generally defined as a goal action and some data

10

Intent II

Used to:
Start an Activity
Broadcast events or changes Start, stop, or communicate with

background Services Access data held by ContentProviders Call backs to handle events

11

Intent Filters
Used to determine recipient of Intent Can be overridden Provide no security

Intents can explicitly define receiver

12

Activities

The user interface consists of a series of Activity components. Each Activity is a screen. User actions tell an Activity to start another Activity, possibly with the expectation of a result.

13

Activity II
The

target Activity is not necessarily in the same application. Directly or via Intent action strings. Processing stops when another Activity is on top.
Must be able to handle malformed intents Dont start Intents that contain sensitive data

14

Activity III

Starting an Activity from an Intent

15

Activity IV

Forcing an Activity to start

16

Activity V

Protecting Activities

17

Broadcasts
Act as recievers for multiple components Provide secure IPC Done by specifying permissions on BroadcastReceiver regarding sender Otherwise, behave like activities in terms of IPC

18

Broadcast II
Still need to validate input just in case Sticky Broadcasts

Persistent Apps require special permissions to

create/destroy sticky broadcasts No guarantee of persistence Cant define permission


Dont send sensitive data

19

Services
Run in background Play music, alarm clock, etc Secured using permissions Callers may need to verify that Service is the correct one

20

Services II

Verification:
Check Services permissions
res = getPackageManager().checkPermission(permToCheck, name.getPackageName());

21

ContentProviders
Generally SQL backend Used to share content between apps Access controlled through permission tags

22

ContentProviders II

Apps can be dynamically authorized access


Possible security hole

Must protect against SQL injection


Sanitize input using parameterization

23

Intent Reflection
Intents may be sent when app is called App sends Intent as app and not as caller: reflection

May exceed callers permissions

Use PendingIntent instead, intent correctly identified as coming from caller

24

File System
Internally standard Linux file systems yaffs2, ext* Support stand Unix permissions Vulnerabilities if permissions not set correctly

Sensitive data could be read Other programs could write junk/waste

space

25

File System II

Consider what files need what protections


Config files: not writeable Log files: not world readable

Mass storage formatted as FAT, no Unix permissions support


All data world readable Consider encryption

26

Binder
Kernel module that provides secure IPC on top of the standard Linux shared memory architecture Includes interface to Parceable

Parceable objects are passed by Binder

Can also move file descriptors, and other Binders

27

Binder II

Efficient, secure IPC


Check callers permissions / identity
Only selectively give out interface Once given out, interface can be disseminated freely

All Binders are globally unique

28

Вам также может понравиться