امنیت در سیستم عامل اندروید

اندروید با توجه خاص به امنیت طراحی شده است. اندروید به عنوان یک پلت فرم ویژگی هایی را ارائه می دهد که داده های موجود کاربر در تلفن همراه را از طریق امنیت چند لایه محافظت می کند. پیش فرض های امنی وجود دارند که از کاربر و برخی پیشنهادات محافظت می کند و می توانند اهرمی باشند برای جامعه توسعه دهندگان تا برنامه هایی امن ایجاد کنند. موارد زیر برخی مشکلاتی هستند که به هنگام ترکیب کردن کنترل های امنیتی اندروید  باید در ذهن داشت:

  • محافظت از داده های مرتبط با کاربر
  • امن کردن منابع سیستم
  • اطمینان از اینکه یک برنامه نمی تواند به داده های برنامه ای دیگر دسترسی داشته باشد

 

هسته امن

لینوکس طی سال ها به یک پلتفرم قابل اعتماد تبدیل شده است و اندروید این واقعیت را با استفاده از هسته آن به کار گرفته است. مدل مجوز مبتنی بر کاربر لینوکس در واقع برای اندروید نیز به خوبی کار کرد.

با انتشار هر نسخه از اندروید، نسخه کرنل آن نیز تغییر کرده است. جدول زیر نسخه های اندروید و نسخه های کرنل مرتبط با هر یک را نشان می دهد :

 

Android Version API Level Linux Kernel
1 1 2.6.25
1.5 3 2.6.27
1.6 4 2.6.29
2.2.x 8 2.6.32
2.3.x 9, 10 2.6.35
3.x.x 11-13 2.6.36
4.0.x 14, 15 3.0.1
4.1.x 16 3.0.31
4.2.x 17 3.4.0
4.3 18 3.4.39
4.4 19, 20 3.8
5.x 21, 22 3.16.1
6.0 23 3.18.1
7.0 24 4.4.1
7.1 25 4.4.1
8.0 26 4.10

 

مدل مجوز اندروید

درک مدل مجوز اندروید که برای هر یک از برنامه ها در زمان ارزیابی حریم خصوصی اجرا می شود، بسیار سودمند است. فایل مانیفست شامل تمام مجوزهایی است که یک برنامه نیاز دارد.

همانطور که در تصویر نشان داده شده، هر برنامه اندروید باید مجوزهای لازمه را برای دسترسی به عملکردهای حساس مانند دسترسی به اینترنت، شماره گیر و غیره از کاربر بگیرد. این قدام برای کاربر شانسی را فراهم می آورد تا بداند که چه عملکردی بر روی دستگاهش توسط یک برنامه مورد استفاده قرار می گیرد. به عبارت ساده، برای انجام هر گونه فعالیت مخرب مانند سرقت داده، به خطر انداختن سیستم و غیره هم به مجوز کاربر نیاز است.

این مدل به کاربر کمک می کند تا ازحملات جلوگیری کند اما اگر کاربر ناآگاه باشد و مجوزهای زیادی را بدهد، به دردسر می افتد.به یاد داشته باشید که به هنگام نصب بدافزار بر روی هر دستگاهی، ضعیف ترین حلقه زنجیر همیشه کاربر است.

تا قبل اندروید 6.0 کاربران باید به هنگام نصب مجوزهای لازمه را می دادند و مجبور بودند همه ی مجوز ها را قبول کنند یا اینکه برنامه نصب نمی شد.

از اندروید 6.0 به بعد کاربران به هنگام اجرای برنامه ها مجوزهای مورد نیاز آن ها را می دهند. این سیستم مجوز دهی جدید، به کاربر کنترل بیشتری بر روی عملکرد برنامه ها با اعطای مجوزهای انتخابی را می دهد. برای مثال، یک کاربر می تواند دسترسی یک برنامه خاص به مکانش را نپذیرد ولی دسترسی به اینترنت را قبول کند. همچنین کاربر می تواند مجوز ها را در هر زمان، با رفتن به صفحه تنظیمات برنامه، لغو کند.

تصویر بالا، اندروید نسخه 4.4 kitkat را نشان می دهد و مدل مجوزدهی قدیمی در اندروید را بررسی می کند. هنگامیکه به صفحه تنظیمات یک برنامه مراجعه کنیم، در قسمت پایینی صفحه اطلاعات برنامه با مجوزهای مورد نیاز برنامه مواجه می شویم که به هنگام نصب از کاربر دریافت شده است. مجوزها در این مدل مجوزدهی فقط خواندنی بوده و قابل تغییر نیستند و این موضوع برای برنامه های از پیش نصب شده بر روی دستگاه و برنامه هایی که کاربر نصب می کند هیچ تفاوتی نمی کند. در تصویر زیر که مربوط به اندروید نسخه 7.0 nougat می باشد و مدل مجوز دهی جدید اندروید را نشان می دهد. در صورت مراجعه به صفحه تنظیمات برنامه، در صفحه اطلاعات برنامه با قسمتی مواجه می شویم که مربوط به مجوزهای برنامه می باشد و در صورتی که برنامه به مجوزهایی نیاز داشته باشد، به صورت خلاصه در زیر این قسمت ذکر می شود. پس از ضربه بر روی قسمت مربوط به مجوزها، به صفحه مجوزهای برنامه هدایت می شویم و در این صفحه قادر خواهیم تمام مجوزهای برنامه را مشاهده و در صورت لزوم لغو کنیم. این عملیات برای برنامه های از پیش نصب شده بر روی دستگاه و همچنین برنامه های نصب شده توسط کاربر یکسان بوده و تفاوتی نمی کند.

هدف مجوزها حفظ حریم شخصی یک کاربر اندرویدی است. برنامه های اندروید باید اجازه دسترسی به داده های حساس کاربر (مانند مخاطبین و پیامک) و همچنین ویژگی های خاص سیستم (مانند دوربین و اینترنت) را درخواست کنند. بسته به ویژگی ، سیستم ممکن است مجوز را به طور خودکار اعطا کند یا ممکن است نیاز به تایید کاربر باشد. یک برنامه باید مجوزهایی را که مورد نیاز است از طریق تگ <uses-permission> در مانیفست برنامه منتشر کند.

مجوزها به چندین سطوح حفاظتی تقسیم می شوند و سطح حفاظت تعیین می کند که آیا درخواست مجوزها  در زمان اجرا مورد نیاز است یا خیر. سه سطح حفاظت وجود دارد که برنامه های شخص ثالث (third-party) را تحت تاثیر قرار می دهد: normal ، signature و dangerous .

  • Normal : اگر برنامه ای مجوز normal را در مانیفست خود داشته باشد به این معنی است که برنامه دارای مجوزهایی است که به حریم خصوصی کاربر یا عملیات دستگاه و دیگر برنامه ها آسیبی وارد نمی کند، و سیستم به صورت خودکار این مجوزها را در زمان نصب برنامه به آن اعطا می کند. برای مثال مجوز تنظیم منطقه زمانی یک مجوز نرمال محسوب می شود. (برای مشاهده برخی از مجوزهای سطح normal به بخش پیوست مراجعه فرمایید.)
  • Dangerous : اگر برنامه ای مجوز dangerous را در مانیفست خود داشته باشد به این معنی است که برنامه داده ها یا منابعی را می خواهد که شامل اطلاعات خصوصی کاربر می شود و یا به صورت بالقوه بر حریم خصوصی کاربر ،عملکرد دستگاه یا دیگر برنامه ها تاثیرمی گذارد. برای مثال توانایی خواندن مخاطبان کاربر یک مجوز خطرناک است که کاربر باید به صورت صریح با اعطای این مجوز موافقت کند و در صورت عدم موافقت برنامه نمی تواند فعالیت مورد نظر را انجام دهد. فقط مجوزهایی که در سطح خطرناک دسته بندی می شوند به تایید کاربر نیاز دارد و شیوه ی درخواست تایید مجوز از کاربر به نسخه اندرویدی که در دستگاه کاربر اجرا می شود بستگی دارد. برای مثال در نسخه ی اندروید 6.0 (API Level 23 ) و بالاتر در زمان نصب هیچ اعلانی برای تایید مجوزها به کاربر نشان داده نمی شود و کاربر باید زمان اجرای برنامه مجوزها را که به صورت یک اعلان با گزینه های Allow (قبول) و Deny (رد) تعیین کند ولی در نسخه های 1.1 (API level 22) و پایین تر سیستم به صورت خودکار زمان نصب تایید تمام مجوزها را از کاربر می گیرد. (برای مشاهده برخی از مجوزهای سطح dangerous به بخش پیوست مراجعه فرمایید.)
  • Signature : سیستم این مجوزها را در زمان نصب به برنامه اعطا می کند و فقط به برنامه هایی اعطا می شود که با همان کلید یا گواهی نامه ی برنامه ای که آن مجوز را تعریف می کند، امضا شده باشد. این قوی ترین سطح مجوز است زیرا از کلید رمز نگاری ای که فقط دراختیار مالک برنامه است، استفاده می کند. این مجوز معمولا توسط برنامه های سیستمی که مسئولیت مدیریت وظایف دستگاه را به عهده دارند استفاده می شود و اغلب به برنامه های شخص ثالث اعطا نمی شود.

 

نویسنده و مترجم : مریم مکاریان خراسانی

 

منبع :

  • Practical Mobile Forensics,Second Edition,Copyright © 2016,Heather Mahalik and Rohit Tamma and Satish Bommisetty,Published by Packt Publishing Ltd.
  • Mobile Application Penetration Testing,Copyright © 2016,Vijay Kumar Velu,Published by Packt Publishing Ltd.
  • Android Security Internals,Copyright © 2015, Nikolay Elenkov, Published by no starch press Inc.
  • https://developer.android.com/guide/topics/permissions/overview#permission-groups