Permissions
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ:
<permission android:name="com.mycoolcam.USE_COOL_CAMERA" android:protectionLevel="dangerous" /><activity android:name=".CoolCamActivity" android:exported="true" android:permission="com.mycoolcam.USE_COOL_CAMERA">
<intent-filter>
<action android:name="com.mycoolcam.LAUNCH_COOL_CAM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Ρ ΠΎΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅:
<uses-permission android:name="com.mycoolcam.USE_COOL_CAMERA" />ΠΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ (ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠ΅Π½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ).
Protection Level
normal: ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΎΠ½ΠΎ Π²ΡΠ΄Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ)dangerous: ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρsignature: ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ, ΡΡΠΎ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΎ (ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΏΡΠΎΡΠΈΠ»ΠΎ ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π·uses-permissionΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ).ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ:
system,installer,privileged, ... ΠΡΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π·uses-permission.
Mistakes
Forgot ProtectionLevel
ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ ProtectionLevel, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ normal.
Ecosystem mistakes
ΠΡΡΡΡ Π΅ΡΡΡ Π΄Π²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅. Π ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ProtectionLevel = signature:
App 1:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mycoolcam">
<permission android:name="com.mycoolcam.USE_COOL_CAMERA" android:protectionLevel="signature" />
<uses-permission android:name="com.mycoolcam.USE_COOL_CAMERA" />
<application android:label="My Cool Cam">
<activity android:name=".CoolCamActivity" android:exported="true" android:permission="com.mycoolcam.USE_COOL_CAMERA">
<intent-filter>
<action android:name="com.mycoolcam.LAUNCH_COOL_CAM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- ... -->
</application>
</manifest>
App 2:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mycoolreader">
<uses-permission android:name="com.mycoolcam.USE_COOL_CAMERA" />
<application android:label="My Cool Reader">
<provider android:name=".AllUserNotesContentProvider" android:authorities="com.mycoolreader.notes_provider" android:exported="true" android:permission="com.mycoolcam.USE_COOL_CAMERA" />
<!-- ... -->
</application>
</manifest>
Π AllUserNotesContentProvider ΡΠΎΠ»ΡΠΊΠΎ App 1 ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ (Π½Ρ ΠΈ ΡΠ°ΠΌΠΎ App 2). ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ App 2? Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ com.mycoolcam.USE_COOL_CAMERA ProtectionLevel Π² normal ΠΈ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ContentProvider'Ρ.
Mitigation: ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
File permissions
ΠΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ: MODE_WORLD_READABLE, MODE_WORLD_WRITABLE
ΠΠ»Ρ ΡΠ°ΡΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ContentProvider!
Last updated
Was this helpful?