PDA

View Full Version : مروری بر امنیت اندروید



msd163
چهارشنبه 10 اسفند 1390, 11:14 صبح
بسمه تعالی

سلام
در این تاپیک قرار است امنیت اندروید به بحث گذاشته ...

از همه دوستانی که در این زمینه اطلاعاتی دارند درخواست می شود حضوری فعال داشته باشند تا انشاالله دیگران نیز بهره مند شوند و در نهایت به یک فهم کلی در مورد امنیت اندروید برسیم.

لازم به ذکر است که این روزها مسائل امنیتی اندروید نقل محافل تخصصی و امنیتی است. بیایید که با باهم بودن ما از این قافله عقب نمانیم


و من الله توفیق

msd163
چهارشنبه 10 اسفند 1390, 11:41 صبح
در ادامه مقدمه و پیش زمینه ای اندروید براتون میذارم:

مطالبی که براتون میذارم برگرفته از منبع زیر است:

http://source.android.com (http://barnamenevis.org/view-source:http://source.android.com/index.html)
------------

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

برنامه کاربردی ثالث (Third party application) : برنامه هایی هستند که کاربر برای افزودن قابلیت های ویژه ای آنها را بر روی دستگاه خود نصب می کند. استفاده از این برنامه ها بین کاربران رایج است. مثل لغت نامه ها، کتابخانه ها، بازی ها و ...

کاربرد یا برنامه کاربردی (Application) : برنامه هایی که توسط توسعه دهندگان یا خود کاربران برای استفاده از امکانات دستگاه روی آن نصب می شود.

منکر پردازشگر (processor-agnostic) : منظور این است که سیستم عامل خود را محدود به معماری پردازشگرها نمی کند و مستقل از پردازشگر است.

قصد (Intent) : یک توصیف انتزاعی از عملیاتی است که انجام می شود.

msd163
چهارشنبه 10 اسفند 1390, 11:43 صبح
مقدمه

اندروید یک پلتفرم مدرن برای موبایل است و به عنوان یک سیستم عامل بازمتن(sourceopen) پا به عرصه گذاشت. نرم افزارهای کاربردهای اندروید از مزایای نرم افزار و سخت افزارهای پیشرفته استفاده می کند و نوآوری و ارزش را برای مصرف کنندگان آن فراهم می کند. برای حفاظت از این ارزش ها این پلتفرم باید یک محیط کاربردی را برای امنیت کاربر، داده، کاربردها، وسایل و شبکه ارائه دهد.
امن ساختن یک پلتفرم باز به یک معماری امنیتی قوی و برنامه های امنیتی سخت گیر نیاز دارد. اندروید با یک امنیت چند سطحی طراحی شده است که انعطاف پذیری مورد نیاز برای یک پلتفرم باز را فراهم می کند. و در این حالت حفاظت از تمام کابران پلتفرم را فراهم می کند.
اندروید بر اساس تفکرات توسعه دهندگان آن طراحی شد. کنترلهای امنیتی برای کاهش هزینه های سربار توسعه دهندگان طراحی شد. توسعه دهندگان می توانند به راحتی کار کنند و به کنترهای امنیتی انعطاف پذیر اعتماد داشته باشند. آنها کمتر با امنیتی که بوسیله ی پیشفرض های امن تامین می شوند آشنا هستند.
اندروید بر اساس تفکرات کاربران آن طراحی شد. طریقه کار برنامه های کاربردی برای کاربران قابل رویت است و کاربران می توانند آن ها را کنترل کنند. این طراحی دارای استثناء هایی است که حمله کننده تلاش دارد برای حمله از آنها استفاده کند، مثل حمله مهندسی اجتماعی برای متقاعد کردن کاربران در نصب بدافزار(malware) و حمله به برنامه های کاربردی ثالث روی اندروید.
این گزارش، اهداف برنامه های امنیتی اندروید را روشن می کند، اصول پایه معماری امنیتی اندروید را شرح می دهد و به سوالات مرتبط به معماری و تحلیل امنیت سیستم پاسخ می دهد. این سند بر روی مشخصه های امنیتی پلتفرم هسته اندروید تمرکز دارد و در مورد امنیت کاربردهای خاص مثل sms و browser بحث نمی کند. ارائه پیشنهاد برای ساخت دستگاه های اندروید، آرایش دستگاه ها و یا توسعه کاربردها برای اندروید اهداف این سند نیست.

msd163
چهارشنبه 10 اسفند 1390, 11:48 صبح
پیش زمینه

اندروید یک پلتفرم باز متن و یک محیط کاربردی را برای دستگاه های موبایل فراهم می کند.
قسمت های تشکیل دهنده پلت فرم اندروید به شرح زیر هستند:
- سخت افزار: اندروید روی یک گستره ی وسیعی از سخت افزارها اجرا می شود، مانند گوشی های هوشمند، تبلت ها و ستاپ باکس ها(set-up-boxes). اندروید processor-agnostic است اما از مزایای بعضی از سخت افزارها – به خصوص قابلیتهای امنیتی مثل ARM v6 eXecute- استفاده نمی کند.
- سیستم عامل: سیستم عامل اصلی روی هسته لینوکس ساخته شده است. همه منابع وسایل، مانند توابع دوربین، داده های GPS، توابع بلوتوث، توابع مکالمه، ارتباطات شبکه و غیره به وسیله سیستم عامل استفاده می شوند.
- کاربردهای زمان اجرا: کاربردهای اندروید اغلب با زبان برنامه نویسی جاوا نوشته می شوند و روی ماشین مجازی Dalvik اجرا می شوند. با این وجود خیلی از کاربردها از قبیل سرویس ها و کاربردهای اصلی اندروید، بومی هستند و یا شامل کتابخانه های بومی هستند. هر دوی Dalvik و کاربردهای بومی در داخل یک محیط امنیتی یکسان – درون Sandbox - اجرا می شوند. کاربردها یک قسمت اختصاصی از سیستم فایل را گرفته و می توانند داده های خصوصی خود شامل فایل های پایگاه داده را در آن بنویسند.

کاربردهای اندروید، سیستم عامل اصلی اندروید را توسعه می دهند. این کاربردها دو دسته هستند:
1 . کاربردهای از پیش نصب شده: اندروید شامل یک مجموعه از کاربردهای از پیش نصب شده است، از قبیل تلفن، ایمیل، تقویم، کاوشگر وب، و دفترچه تلفن. این توابع هم مورد استفاده کاربران قرار می گیرند و هم قابلیت های ویژه ای را برای کاربردهای دیگر فراهم می کنند. این کاربردها ممکن است قسمتی از پلتفرم بازمتن باشند یا ممکن است به وسیله یک OEM برای یک برای یک دستگاه خاص توسعه داده شده باشد.
2 . کاربردهای نصب شده توسط کاربرد: این دسته را بیشتر تحت عنوان برنامه کاربردی می شناسند. اندروید یک محیط توسعه باز را برای پشتیبانی از یک کاربرد سومی(کاربرد ثالث) فراهم می کند. فروشگاه اندروید صدها هزار برنامه کاربردی را برای استفاده کنندگان ارائه داده است.

گوگل مجموعه ای از سرویس های ابری(Cloud service) را فراهم می کند که برای هر دستگاه اندروید سازگار در دسترس است. سرویس های ابری اصلی به این شرح هستند:
1) فروشگاه اندروید(Android Market): این فروشگاه یک مجموعه از سرویس ها است که به کاربران اجازه می دهد از طریق وب یا دستگاه اندروید خود برنامه های کاربردی مورد نظر خود را پیدا کرده، خریده و نصب کنند .
2) بروز رسانی اندروید(Android Update): سرویس بروزرسانی اندروید قابلیت های جدید و بروزرسانی های امنیتی جدید را به صورت خودکار یا از طریق وب فراهم می کند.
3) سرویس های کاربرد (Application Service): چارچوبی که به کاربردهای اندروید اجازه می دهد که از قابلیتهای ابری(cloud capabilities) استفاده کند. از جمله این قابلیت ها می توان به پشتیبان گیری از داده های برنامه ها و تنظیمات، و پیام رسانی از ابر به دستگاه (C2DM) اشاره کرد.

این سرویس ها قسمتی از پروژه بازمتن اندروید نیستند و خارج از حوزه این تحقیق هستند. اما امنیت دستگاه های زیادی به آنها وابسته است. برای مطالعه امنیت این سرویس ها به Google Service for Android: security review مراجعه شود.

srfarzad
چهارشنبه 10 اسفند 1390, 21:39 عصر
خیلی ممنون از شروع بحث امنیت اندروید
من یک مقاله آموزشی رو پیدا کردم و لینکش رو میزارم و بعد روی این مقاله بحث می کنیم

لینک تصحیح شد ! ! !
دانلود : اینجا (http://uplod.ir/7506ige029ua/iSEC_Securing_Android_Apps.zip.htm)

msd163
سه شنبه 16 اسفند 1390, 13:17 عصر
خواهش...

دوست عزیز من نتونستم مقاله رو دریافت کنم

بی زحمت لینکتو بررسی بکن ببین مشکلی نداشته باشه

---------
تشکر

nj2288200
سه شنبه 16 اسفند 1390, 13:20 عصر
سلام
موضوع جالبیه
در نظر داشته باشید که امنیت اندروید از مباحث داغ این روزهاست

من استقبال می کنم...

msd163
چهارشنبه 17 اسفند 1390, 10:22 صبح
مقاله رو گرفتم. در ادامه روی اون بحث خواهد شد. اما...
ادامه بحث:

بازبینی برنامه امنیتی اندروید

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

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

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

3. بازبینی بازمتن(open source) و اجتماعی: پروژه بازمتن اندروید این امکان را فراهم می کند که همه افراد علاقمند بتوانند بازبینی امنیتی داشته باشند. اندروید همچنین از تکنولوژی بازمتنی استفاده کرده است که دارای بازبینی امنیتی خارجی قابل توجهی است. مثل هسته لینوکس. بازار اندروید انجمنی را جهت اطلاع رسانی درباره برنامه های کاربردی برای کاربران و شرکت ها فراهم کرده است.

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

msd163
چهارشنبه 17 اسفند 1390, 10:27 صبح
معماری امنیتی پلتفرم اندروید

اندروید تلاش کرد تا با بازنگری در مفهوم کنترلهای امنیتی سیستم عامل های قدیمی، یک سیستم عامل امن تر و قابل استفاده برای پلتفرم های موبایل داشته باشد. این کنترل ها به شرح زیر هستند:
· محافظت از داده کاربر
· محافظت از منابع سیستم
· ایزوله کردن کاربردها
· برای رسیدن به این هدف، اندروید سه خصیصه امنیتی کلیدی را فراهم کرد:
· امنیت قوی در سطح سیستم عامل به وسیله هسته لینوکس
· Sandbox اجباری برای همه کاربردها
· ارتباط بین پردازشی امن
· امضا کاربرد
· اجازه تعریف شده توسط کاربرد و اجازه داده شده توسط کاربر
در ادامه مشخصه های بالا و دیگر مشخصه های امنیتی پلت فرم اندروید توضیح داده شده است:
شکل 1 مولفه های امنیتی و ملاحظات پشته نرم افزار اندروید را نشان می دهد. هر مولفه فرض می کند که مولفه های زیرین امن هستند. به استثنای تعداد کمی از کدهای سیستمی که در root اجرا می شوند همه کدهای که بالای هسته لینوکس قرار دارند به وسیله sandbox محدود شده اند.

83781

شکل1: پشته نرم افزاری اندروید

msd163
چهارشنبه 17 اسفند 1390, 18:08 عصر
در ادامه مباحث زیر آورده می شود.
امیدوارم که مفید واقع بشه :

امنیت در سطح هسته و سیستم
- امنیت لینوکس
- Sandbox برنامه کاربردی
- بخش بندی سیستم و حالت امن
- مجوزهای سیستم فایل
- رمزنگاری سیستم فایل
- حفاظت از رمز
- مدیریت اجرایی دستگاه
- افزایش امنیت مدیریت حافظه
- روت کردن دستگاه

msd163
پنج شنبه 18 اسفند 1390, 00:54 صبح
امنیت در سطح سیستم و هسته

در سطح os، پلتفرم اندروید امنیت هسته ی لینوکس را فراهم می کند. همچنین با بکارگیری قابلیت «ارتباط بین پردازشی امن»[1] (http://barnamenevis.org/#_ftn1) (IPC)، ارتباط امن بین کاربردهای در حال اجرا را بر روی پردازنده های مختلف فراهم می کند. این خصیصه امنیتی در سطح OS اطمینان می دهد که حتی کدهای بومی به وسیله sandbox محدود شود. چه آن کد نتیجه ی رفتار یک کاربرد باشد یا سوء استفاده از آسیب پذیری یک کاربرد باشد، سیستم از آسیب رساند آن به دیگر کاربردها، سیستم اندروید و خود دستگاه جلوگیری می کند.

امنیت لینوکس

پایه پلتفرم اندروید هسته لینوکس است. خود لینوکس برای سالها بطور گسترده استفاده شده است و در میلیونها محیط حساس امنیتی بکار برده شده است. در طی این مدت لینوکس توسط موسسات و متخصصان امنیتی زیادی امن و پایدار شد.
هسته لینوکس به عنوان پایه ای برای محیط پردازشی موبایل، چندین مشخصه کلیدی برای اندروید فراهم می کند :
· مدل مجوزدهی مبتنی بر کاربر
· ایزوله سازی فرآیند
· مکانیزم توسعه پذیر برای IPC امن
· توانایی در حذف قسمت های غیرضروری و ناامن از هسته
هدف امنیتی اصلی لینوکس به عنوان یک سیستم عامل چندکاربره، محافظت کردن منابع یک کاربر در مقابل کاربران دیگر است. پس لینوکس:
§ از خوانده شدن فایل B توسط کاربرA جلوگیری می کند.
§ اطمینان می دهد که کاربر A نمی تواند حافظه B را تخلیه کند.
§ اطمینان می دهد که کاربر A نمی تواند منابع پردازشی B را مصرف کند.
§ اطمینان می دهد که کاربر A نمی تواند از امکانات کاربر B استفاده کند(مثل GPS، Bluetooth و ...)

Sandbox کاربرد (Application sandbox)
پلتفرم اندروید از مزیت «حفاظت مبتنی بر کاربر» لینوکس به عنوان وسیله ای برای شناسایی و ایزوله سازی منابع برنامه کاربرد استفاده می کند. این سیستم یک شناسه کاربر یکتا (UID) به هر برنامه کاربردی اختصاص داده و آن را به عنوان یک فرآیند جداگانه اجرا می کند. روش اندروید با روش دیگر سیستم عامل ها (همچنین پیکربندی قدیمی لینوکس) متفاوت است. چراکه در آنها برنامه های کاربردی گوناگونی با یک مجوز کاربر اجرا می شوند.
این ویژگی متمایز، امکان نصب sandbox در سطح هسته را فراهم می کند. هسته اندروید، با استفاده از امکانات استاندارد لینوکس(مانند شناسه کاربر و گروه(UID,GID)) امنیت بین برنامه کاربردی و سیستم را در سطح فرآیند و فراهم می کند. به صورت پیشفرض، برنامه کاربردی نمی تواند با دیگر برنامه ها تعامل داشته باشد و دسترسی محدودی به OS دارند. اگر یک برنامه تلاش کند داده های برنامه دیگر را بخواند و یا بدون اجازه تماس برقرار کند(برقراری تماس یک برنامه کاربردی جداگانه است)، سیستم عامل از آنها حفاظت کرده و اجازه چنین کاری را نمی دهد، چراکه برنامه مجوز مربوطه را ندارد. Sandbox، ساده، قابل بازبینی و مبتنی بر سبک یونیکس قدیمی است که در آن کاربر فرآیند و فایل مجوز از هم جدا هستند.
از آنجایی که Sandbox برنامه کاربردی در هسته قرار دارد، این مدل امنیتی قابل توسعه به کدهای محلی(native code) و کاربردهای سیستم عامل است. همه نرم افزارهای بالای هسته در شکل 1 از قبیل کتابخانه های سیستم عامل، فریمورک کاربرد، برنامه زمان اجرا و همه برنامه های کاربردی داخل Sandbox اجرا می شوند. در بعضی پلتفرم ها، توسعه دهندگان برای اعمال کنترلهای امنیتی به یک چارچوب توسعه خاص، مجموعه ای از توابع API، و یا زبان برنامه نویسی خاص محدود هستند. در اندروید، در نوشتن برنامه های کاربردی به گونه ای که امنیت تامین شود محدودیتی وجود ندارد. در این خصوص تنها کدهای محلی تفسیر شده ، به تامین امنیت مقید هستند.
در بعضی از سیستم عامل ها خطاهای حافظه بطور کلی منجر به نقض امنیت دستگاه می شود. اما در اندروید چنین نیست، چرا که تمام برنامه های کاربردی و منابعشان در سطح OS به صورت Sandbox شده هستند. یک خطای حافظه تنها اجازه اجرای کدهای دلخواه را در داخل آن برنامه خاص و با مجوزی که بوسیله سیستم عامل به آن داده است خواهد داد .
مانند همه خصیصه های امنیتی، Sandbox نیز غیر قابل شکست نیست. با این وجود برای نفوذ به Sanbox یک دستگاه که به خوبی پیکربندی شده است، نفوذگر ابتدا باید امنیت هسته لینوکس را در اختیار بگیرد. یعنی ابتدا امنیت هسته لینوکس را نقض کند.

------------------------
1. DInter-process communication

msd163
پنج شنبه 18 اسفند 1390, 00:58 صبح
امنیت در سطح سیستم و هسته (ادامه)


بخش بندی سیستم و حالت امن

بخش بندی سیستم شامل هسته اندروید و همچنین کتابخانه های OS، برنامه های زمان اجرا، فریمورک کاربرد و برنامه های کاربردی می شود. این بخش ها تنها برای خواندن هستند(read-only). هنگامی که یک کاربر یک دستگاه را به صورت «حالت امن» راه اندازی می کند، تنها کاربردهای اصلی اندروید در دسترس خواهند بود. این حالت اطمینان می دهد که دستگاه در محیطی اجرا می شود که خالی از نرم افزارهای ثالث (third-party software) است.

مجوزهای سیستم فایل

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

رمزنگاری سیستم فایل

اندروید3 و نسخه های بعدی آن رمزنگاری کامل سیستم فایل را فراهم می کنند. در نتیجه همه داده های کاربر را می توان در هسته رمزنگاری کرد. رمزنگاری با پیاده سازی AES128 به صورت CBC و ESSIV:SHA256 انجام می شود. کلید رمزنگاری نیز با استفاده از AES128 و کلیدی که از رمز کاربر گرفته شده است محافظت می شود. برای مقابله با حملات حدسی نظام مند(systematic) -مانند حمله brute force- رمز عبور با یک مقدار تصادفی ترکیب می شود(به این مقدار تصادفی نمک(salt) می گویند) سپس با SHA1 و با استفاده از الگوریتم استاندارد PBKDF2 به صورت چکیده در می آید(Hash می شود). برای مقابله با حمله لغت نامه، اندروید قوانین پیچیدگی را فراهم کرده است که مدیر سیستم می تواند آنها را فعال کرده و سیستم عامل آنها را اعمال می کند. این قوانین استفاده از رمزهای ساده و اصطلاحات رایج و دیگر مواردی که منجر به یک رمز با پیچیدگی کم می شود را ممنوع می کند. رمزنگاری سیستم فایل به رمز کاربر نیاز دارد و از قفل مبتنی بر الگوی صفحه پشتیبانی نمی کند.

msd163
پنج شنبه 18 اسفند 1390, 02:34 صبح
امنیت در سطح سیستم و هسته (ادامه)


حفاظت رمز

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

مدیریت سیستم

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

افزایش امنیت مدیریت حافظه

اندروید خصیصه هایی دارد که افشای اطلاعات حساس امنیتی را سخت تر می کند. بسته ی توسعه نرم افزار اندروید (SDKAndroid)، کامپایلرها و OS از ابزاری استفاده می کنند که افشای مربوط به خرابی های متداول حافظه سخت تر می شود:

· تصادفی سازی آرایش فضای آدرس (ASLR) برای تصادفی کردن مکان های کلیدی در حافظه · عدم اجرا مبتنی بر سخت افزار(Hardware-based No eXecute -NX-) به منظور جلوگیری از اجرای کد در پشته(stack) و کپه(Heap).

· سیاست جلوگیری از تجاوز از حافظه پشته (Stack buffer) · IOP امن(safe-iop) به منظور کاهش سرریزهای عدد صحیح
· افزودن OpenBSD dlmalloc برای جلوگیری از آسیب پذیری double free() و جلوگیری از حمله ادغام قطعه(chunk consolidation attack). حمله ادغام قطعه یک راه رایج برای سوء استفاده از خرابی های heap است.

· استفاده از OpenBSD calloc برای جلوگیری از سرریز اعداد صحیح در طول اختصاص حافظه · استفاده از mmap_min_addr() موجود در لینوکس به منظور تعدیل برتری اشاره گرهای تهی غیر ارجاعی

روت کردن

بطور پیشفرض، در اندروید تنها هسته و تعداد محدودی از کاربردهای اصلی با مجوز root اجرا می شوند. کاربر یا کاربرد با مجوز root می تواند سیستم عامل، هسته و هر کاربرد دیگر را تغییر دهد و اندروید از این کار جلوگیری نمی کند. عموماً root دسترسی کامل به برنامه های کاربردی و داده های آن دارد. کاربرانی که مجوز دستگاه اندروید خود را تغییر می دهند تا دسترسی root داشته باشند امکان افشای امنیت را برای کاربردهای مخرب افزایش می دهند.
توانایی در تغییر دستگاه اندروید برای توسعه دهندگان آن مهم است. در بسیاری از دستگاه های اندروید کاربر قادر است که قفل راه انداز(bootloader) را به منظور نصب یک سیستم عامل دیگر باز کند. این سیستم عامل جایگزین ممکن است به کاربر مالک آن(Owner) اجازه دهد دسترسی در سطح root داشته باشد. در نتیجه او می تواند برنامه های کاربردی و مولفه های سیستم را اشکال زدایی (debugging) کند و یا به خصیصه هایی دسترسی پیدا کند که توسط API های اندروید ارائه نشده است.
در بعضی از دستگاه ها، شخص با کنترل فیزیکی یک وسیله و یک کابل USB می تواند یک سیستم عامل را نصب کند و مجوز root را به کاربر بدهد. برای حفاظت از داده های کاربر هنگامی که bootloader قفل گشایی می شود، باید از مکانیزمی برای پاکسازی داده های کاربر به عنوان مرحله ای از قفل گشای استفاده شود. دسترسی به root از طریق کاوش در خطاهای هسته و یا نقص های امنیتی می تواند این حفاظت را دور بزند.
رمزنگاری با کلیدی که روی دستگاه ذخیره می شود از داده های کاربر در برابر کاربر root حفاظت نمی کند. کاربردها می توانند یک لایه از حفاظت داده را با استفاده از رمزنگاری با کلیدی که در خارج از دستگاه ذخیره می شود، فراهم کنند. در این مورد کلید می تواند روی یک سرور ذخیره شود و یا در رمز کاربر قرار گیرد. این روش می تواند یک حفاظت موقتی را تا زمانی که کلید حضور ندارد فراهم کند. اما در بعضی نقاط نیاز است که کلید به کاربرد داده شود و در این مواقع کلید برای کاربران root دسترس پذیر است.
با استفاده از راه حل های سخت افزاری می توان حفاظت قوی تری را روی داده های اعمال کرد. OEMها (سازندگان تجهیزات اصلی) ممکن است از یک روش سخت افزاری برای دسترسی به نوع خاصی از محتویات استفاده کنند. مانند DRM برای پخش ویدیو یا ذخیره سازی مورد اعتماد مرتبط با NFC برای کیف پول گوگل(Google wallet).
در مواقع دزدیده شدن یا گم شدن دستگاه، رمزنگاری کامل سیستم فایل با استفاده از رمز کاربر از کلید رمزنگاری حفاظت می کند، در نتیجه دسترسی به داده های کاربر با تغییر bootloader و یا سیستم عامل بدون داشتن رمز کاربر امکان پذیر نیست.

aminghaderi
پنج شنبه 25 اسفند 1390, 22:43 عصر
سلام دوستان خسته نباشید.
من از یکی از همکارانم حدودا یک ماه پیش شنیدم سیستم اندروید یه سیستم جاسوسی شناخته شده؟!
من تحقیق نکردم ولی الان که تاپیک شما رو دیدم گفتم این مسئله رو درمیان بگذارم.
دوستانی که اطلاعات کاملی دارند خوشحال می شم راهنمایی فرمایند؟

با تشکر.

msd163
جمعه 01 اردیبهشت 1391, 16:47 عصر
سلام

با اندکی تاخیر باید بگم که بله یه جورایی درسته

اندروید امنیتشو از لینوکس به ارث برده البته توسعه دهندگان اندروید مشخصه های جدیدی در راستای افزایش امنیت به اون اضافه کرده اند.
ولی آنچه که مشخصه در کل این سیستم عامل نیز مثل لینوکس از اصول کنترل دسترسی اختیاری استفاده می کنه.

و دیگر اینکه اندروید گرفتار روت کیت IQ Carrier است که بدون این که کاربران متوجه شوند می تواند اطلاعات اشخاص را سرقت کند.

یکی از اقداماتی که متاسفانه اکثر کاربران اندروید انجام میدهند روت کردن سیستم عامل گوشیشونه که این کار، راه را برای سوء استفاده برنامه های مخرب باز می کنه که اکیداً توصیه نمی شه، البته اگه بحث امنیت گوشیتون براتون مهمه