Striptease of the Android permission system
summary
Explains how Android maps app signatures to unique UIDs and GIDs at install time, how the zygote fork drops root and sets those IDs, and how PackageManager maps dangerous permissions (example: SD card write) to Linux groups so apps get those GIDs. Traces a vibrator request from manifest through NotificationManager to VibratorService, showing the UID/GID mapping, Binder calling UID check, and JNI C code toggling the device. Demonstrates a real bug: an exported receiver without permission plus sharedUserId=system lets ADB am trigger a shell command as system, then shows protecting the receiver as the fix; notes Android M refactors may change details.
AI-written summary · about
chapters (17)
- 0:00Start
- 1:18GENERIC DEFINITION
- 2:57LINUX FILE PERMISSIONS
- 3:38LINUX PROCESS PERMISSIONS
- 4:19LINUX PROTECTION SYSTEMS
- 5:34ANDROID USER DEFINITIONS
- 7:30ANDROID FILE PERMISSIONS
- 9:08ANDROID PERMISSIONS
- 10:00DIFFERENTS TYPES OF PERMISSIONS
- 10:34PERMISSIONS DEFINITION
- 11:36ANDROID PROCESS PERMISSIONS
- 13:17APPLICATION INSTALLATION PROCESSO
- 15:22APPLICATION START-UP PROCESSO
- 17:10EXAMPLE: MMS APPLICATION
- 17:43VIBRATOR REPRESENTATION
- 23:45USE CASE
- 24:31DIRTY CODE
related talks
37mStriptease of The Android Permissions System (en)
36mRevisiting Stealthy Sensitive Information Collection from Android Apps
48mSecuring the System: A Deep Dive into Reversing Android Pre-Installed Apps
41m"Mother, May I?" Asking for Permissions
25mHarvesting Inconsistent Security Configurations in Custom Android ROMs...
32mHacking the Hackers’ Code: Inside Android Malware
20mWhat billions of device ids reveal about Android app abuse
25m(Un)protected Broadcasts in Android 9 and 10
