Android Declassification Infrastructure
The Declassifier Project aims to improve Android security by refining the permission model for applications. Built upon the foundations of the Android OS, which powers a vast majority of smartphones, our initiative identifies commonly used and vulnerable permissions, breaking them down into smaller, more specific permissions. This leads to less-privileged applications that maintain operational functionality while enhancing user security. This paper outlines the technical implementation of our Declassifier services, including broadcast receivers, content providers, and activity prompts, to ensure refined control over data access.
Android Declassification Infrastructure
E N D
Presentation Transcript
Android Declassification Infrastructure Matan David Yuval Evron Project Advisor: Roei Schuster
Smart Phones • Go with us everywhere we go. • Getting richer in capabilities and sensors. • We install different applications on our phone. • An over-privileged application could pose a serious threat to us as end users.
Android OS • Unveiled by Google at 2007. • Based on the Linux OS. • Used by 50% of smartphone owners in the U.S. • Over 400 million Android devices in use by February 2012. • Over 1,000,000 Android devices activated every day.
Android Permissions • Enables apps to “communicate” with different hardware components (Camera, SD Card..) • <uses-permission android:name= "android.permission.CAMERA"/> • Not very fine grained. • Each permission grants access to not only one service, but to several.
Our Project • Does not involve changing the OS infrastructure itself. • Identify the most commonly used and most vulnerable permissions . • Subdivide them into smaller, finer grained permissions. • A “Declassifier”.
Project Goals • Enable much safer Android programming. • Applications utilizing our infrastructure will be less privileged and more secure. • No compromise on application functionality. • Make porting of applications as simple as possible.
Success Criteria • Try to influence as many applications as possible. • Success will be measured by revising consumer applications, limiting their privileges, while preserving their original capabilities.
Implemented Declassifier Services • Android Permission – android.permission.READ_CONTACTS Declassifier Permissions: • my.declassifier.CONTACTS_PHOTO_BY_NAME_PERMISSION • my.declassifier.CONTACTS_PHONE_BY_NAME_PERMISSION • my.declassifier.CONTACTS_ADDRESS_BY_NAME_PERMISSION • my.declassifier.CONTACTS_BIRTHDAY_BY_NAME_PERMISSION • my.declassifier.CONTACTS_EMAIL_BY_NAME_PERMISSION • my.declassifier.CONTACTS_IS_STARRED_BY_NUMBER_PERMISSION • Android Permission - android.permission.WRITE_EXTERNAL_STORAGE Declassifier Permissions: • my.declassifier.EXTERNALSTORAGE_WRITE_FILE_PERMISSION • my.declassifier.EXTERNALSTORAGE_DELETE_FILE_PERMISSION • my.declassifier.EXTERNALSTORAGE_ALL_FILENAMES_PERMISSION • my.declassifier.EXTERNALSTORAGE_CLEAR_ALL_DATA_PERMISSION • Android Permission – android.permission.READ_PHONE_STATE Declassifier Permissions: • my.declassifier.PHONE_STATED_READ_PHONE_TYPE_PERMISSION • my.declassifier.PHONE_STATE_READ_SUBSCRIBER_ID_PERMISSION • my.declassifier.PHONE_STATE_READ_CALL_STATE_PERMISSION • my.declassifier.PHONE_STATE_READ_SIM_SERIAL_NUMBER_PERMISSION
Implemented Declassifier Services • Android Permission -android.permission.READ_CALENDAR Declassifier Permissions: • my.declassifier.CALENDAR_EVENT_DATE_BY_TITLE_PERMISSION • my.declassifier.CALENDAR_LOCATION_BY_TITLE_PERMISSION • my.declassifier.CALENDAR_DESCRIPTION_BY_TITLE_PERMISSION • Android Permission -android.permission.RECORD_AUDIO Declassifier Permissions: • my.declassifier.START_VOICE_RECORD_PERMISSION • Android Permission -android.permission.CHANGE_WIFI_STATE Declassifier Permissions: • my.declassifier.TURN_OFF_WIFI_PERMISSION • my.declassifier.TURN_ON_WIFI_PERMISSION • my.declassifier.CONNECT_TO_WIFI_PERMISSION
Implementation We broke down our Declassifier into 3 types: • BroadcastReceiver – • The app sends an ordered broadcast, with all the information encapsulated inside an Intent. Intent i = newIntent("com.example.Declassifier. CALENDAR_EVENT_BY_TITLE_ACTION"); i.putExtra("Title",titleNameStr); • The app also supplies a custom BroadcastReceiver which will handle the Declassifier’s result (callback mechanism). • The Declassifier filters out requests which to not satisfy the relevant permissions, and the app filters out returned results from unauthorized sources.
Implementation • ContentProvider – • Encapsulates data and provides it to applications through the single ContentResolver interface. • Content is queried: Uri uri = Uri.parse("content://" + AUTHORITY + "/" + BASE_PATH + "/" + GET_EVENT_DESCRIPTION_BY_TITLE); Cursor cursor = cr.query(uri,null,selection,null,null); • A cursor to the content is returned. • The Declassifier checks if the given URI is permitted access (using the path-permission mechanism) and filters out queries that are not.
Implementation • Activity - • Pops up a confirmation screen on the service the 3rd party application is trying to access. • The User has the option of granting or denying the application access. • If permission is granted, the calling application uses service as needed. • If permission is denied, the calling application will return appropriate message and end running method.
Ported Applications • SMS Popup – For use with the Phone State declassifier • http://code.google.com/p/android-smspopup/ • Auto Answer – For use with the Contacts declassifier. • http://code.google.com/p/auto-answer/ • My Simple Notepad – For use with the External Storage declassifier. • http://code.google.com/p/my-simple-notepad/feeds • Wifi Compass – For use with the Wifideclassifier. • http://code.google.com/p/wificompass/ • GVoiceMail – For use with the Voice Record declassifier. • http://code.google.com/p/gvoicemail/