چکیده
افزایش توجه و تمایل به مبحث امنیت اندروید، موجب شد تا تلاشهای گستردهای در راستای کمک به توسعهدهندگان برای ساخت برنامههای امنتر صورت گیرد. حاصل این تلاشها، ابزارها و تکنیکهایی بود که میتواند آسیبپذیریهای (و رفتارهای مخرب) شناخته شده در برنامههای اندرویدی کشف کند. با این حال تاکنون هیچ ارزیابی از میزان موثر بودن این ابزارها و تکنیکها در کشف آسیبپذیریهای شناخته شده انجام نشده است. به همین منظور، مرجع [1] میزان موثر بودن ابزارهای کشف آسیبپذیری را مورد ارزیابی قرار داده است. این ارزیابی به توسعهدهندگان برنامههای اندرویدی در انتخاب ابزار تحلیل امنیت مناسب کمک میکند. در این گزارش خلاصهای از مقاله [1] ارائه میکنیم.
کلمات کلیدی: آسیبپذیری، امنیت اندروید، مخزن جیرا، ابزارهای تحلیل امنیت
1 مقدمه
با اینکه فروشگاههای برنامههای اندرویدی[1] تلاش میکنند تا برنامههای مخرب را از اکوسیستم دور نگهدارند، برنامههای مخرب میتوانند از طرق مختلف (نصب برنامه از منابع نامطمئن، ناتوانی در کشف رفتارهای مخرب در برنامهها، دسترسی به وبسایتهای مخرب) وارد اکوسیستم شوند؛ بنابراین نیاز است توسعه دهندگان برنامههای خود را امن کنند.
ارزیابیهایی که تاکنون صورت گرفته توسط عوامل مختلفی محدود شدهاند؛ مانند:
- تنها ابزارهای آکادمیک بررسی شدهاند.
- تعداد کمی از ابزارهای امنیتی بصورت عملی بررسی شدهاند.
- بر اساس معیار[2]ی بررسی شدهاند که نمود واقعی رخداد آسیبپذیری در دنیای واقعی نیستند.
2 آیا معیارها، آسیبپذیریها را دقیقا همانطوری که در دنیای واقعی رخ میدهد، نشان میدهند؟
برای ارزیابی ابزارهای امنیتی، کاتالوگ آسیبپذیریهای برنامههای اندرویدی به نام مخزن جیرا[3] – یک مخزن رو به رشد از آسیبپذیریهای برنامههای اندرویدی – را بررسی کردیم. هر معیار در این مخزن، یک آسیبپذیری مشخص X را ضبط میکند که شامل سه برنامه اندرویدی به شرح زیر است:
- برنامه آسیبپذیر[4] که آسیبپذیری X را دارد.
- یک برنامه مخرب[5] که میتواند از آسیبپذیری X در برنامه آسیبپذیر استفاده کرده و به برنامه صدمه بزند.
- یک برنامه امن که آسیبپذیری X را ندارد.
این مخزن شامل 42 معیار است که در 7 گروه دستهبندی میشوند:
- دسته رمز: آسیبپذیریهایی که به رمزنگاری مربوط میشوند؛ مثال: حاصل رمزنگاری مجدد یک پیام رمزنگاری شده در مود EBC، خود پیام است.
- دسته ICC[6]: آسیبپذیریهایی که درنتیجه تعاملات قسمتهای داخلی مختلف یک برنامهی اندرویدی (فعالیتها، سرویسها، دریافتکننده پیامهای عمومی[7]، ارائهدهندگان محتوا[8]) ایجاد میشود.
- شبکهسازی: برنامههای اندرویدی میتوانند از طریق کتابخانههای شبکهسازی با به کارگیری پروتکلهای مختلف (غیر از وب) با هم ارتباط برقرار کنند که خود میتواند آسیبپذیری ایجاد کند؛ بطور مثال میتوانند برای شنیدن اتصالات کاربر، سوکتهای سرور را باز کنند که ممکن است موجب درز اطلاعات شود.
- مجوزها[9]: علاوه بر مجوزهای تعریف شده توسط خود سیستم، برنامههای اندرویدی هم میتوانند مجوزهایی تعریف و استفاده کنند. این مجوزها میتوانند با چهار سطح حفاظت موجود (عادی، خطرناک، امضاء، امضا یا سیستم) ترکیب شوند تا دسترسی به سرویسها و ویژگیهای مختلف را کنترل کنند. مثال: مجوزهایی با سطح محافظت عادی، بطور خودکار، امکان درخواست کردن برای دریافت مجوز، در حین نصب را دارند درنتیجه هر مولفه یا واسطی که توسط مجوزهای عادی محافظت شود قابل دسترسی برای هر برنامهی نصب شدهای خواهد بود.
- حافظه: شامل آسیبپذیریهای مربوط به پایگاه داده وحافظه است.
- سیستم: شامل آسیبپذیریهای مربوط به کتابخانههای سیسمتی که با فرایندها سروکار دارند، است.
- وب: برنامههای اندرویدی میتوانند از طریق کتابخانههای وب با وبسرورها ارتباط SSL/TLS و یا بدون آن برقرار کنند، که خود میتواند آسیبپذیری ایجاد کند؛ بطور مثال برنامههایی که به سرورهای ریموت از طریق پروتکل http متصل میشوند خطر حمله مرد میانی[10] را به همراه دارد.
آسیبپذیریهایی که مبنای ارزیابی ابزارها هستند باید معتبر (به واقع یک ضعف مشخص در برنامه ایجاد کند)، کلی (قابل استفاده در حالت کلی بدون احتیاج به دسترسی آدمین و یا روت بودن دستگاه)، قابل اعمال (بتوان آسیبپذیری را به نحوی اعمال کرد که به برنامه صدمه وارد کند) و جاری (وجود آسیبپذیری در برنامههای جاری و آینده) باشند.
از آنجایی که آسیبپذیریهای موجود در جیرا در مقالات اخیر و مستندات اندروید وجود دارد پس معتبرند، برنامه آسیبپذیر و برنامه مخرب موجود در هر معیار میتوانند بر روی شبیهسازها و یا دستگاههای اندرویدی اجرا شوند پس قابل اعمال و کلی نیز هستند همچنین این آسیبپذیریها بر اساس کتابخانههای اندرویدی سطح 19 تا 25 (بجز 20) – که شامل 90درصد از دستگاههای اندرویدی جهان هستند – میباشند، پس جاری نیز هستند.
در ادامه برای ارزیابی عملکرد ابزارها در کشف آسیبپذیری برنامهها، به نمونهبرداری تعدادی از برنامههای اندرویدی از Androzoo[11]– بعنوان منبعی از برنامههای اندرویدی در دنیای واقعی – پرداختیم. Androzoo لیستی از همهی apkهای موجود را به همراه هش SHA256 آنها، حجم و تاریخ هر کدام، نگهداری میکند.
تصمیم بر آن شد که تنها apkهایی که سطح کتابخانهی هدف آنها 19 یا بالاتر و حداقل سطح کتابخانهشان 14 یا بالاتر بود انتخاب شوند. برای هر apk براساس سطح کتابخانهای که استفاده کرده بود یک پروفایل کتابخانه ایجاد کردیم که شامل صفات فایل manifest، متدها و فیلدهای استفاده شده در برنامه و کتابخانههای مرتبط است.
نتیجه بررسیهای انجام شده نشان میدهد که تعداد زیادی از برنامهها در دنیای واقعی از تعداد زیادی از کتابخانههای موجود در معیار جیرا استفاده میکنند. بنابراین میتوان نتیجه گرفت جیرا نمودی از برنامههای اندرویدی دنیای واقعی است.
۱ App store
2 benchmark
3 Ghera repository : https://bitbucket.org/secure-it-i/android-app-vulnerability-benchmarks/src/master/
6 Inter Component Communication
برای مطالعه ادامه مقاله لینک دانلود اینجا را کلیک کنید.