امنیت اپلیکیشن موبایل (Mobile Application Security)
تست امنیت اپلیکیشن موبایل (Mobile Application Security)، فرآیند آنالیز برنامهها و شناسایی نقاط آسیبپذیر در آنها است. هکرها در حال بررسی این فضا هستند تا از راههای جدید، برای سرقت اطلاعات موبایلها استفاده میکنند. بنابراین توسعهدهندگان برنامهها، باید این مورد را بیشتر مورد توجه قرار دهند.
همزمان با توسعه اپلیکیشنهای موبایل، نیاز به بازنگری کلی در امنیت اپلیکیشن موبایل (Mobile Application Security) نیز احساس خواهد شد. اما صحبت از تستهای امنیت برنامه موبایل، با اجرای آن آسمان تا زمین متفاوت است. به همین دلیل، در این مقاله تلاش خواهیم کرد که راهنمایی جامع و کاربردی در اجرای این تستها به شما ارائه دهیم. پیش از شروع بحث اصلی، لازم است به مفهوم تست نفوذ مراجعه کنیم.
همانطور که پیشتر توضیح دادیم، تست نفوذ (pentest)، فرایندی است که در آن یک هکر قانونمند، برای ارزیابی اهداف خود، با ارسال کدهای مخرب به یافتن آسیبپذیریها میپردازد و هدف اصلی پن تست (آزمون نفوذ)، دسترسی غیرمجاز به سیستم به تقلید از یک هکر غیرقانونی میباشد.
شما میتوانید برای آشنایی بیشتر با این مفهوم، به مقاله تست نفوذ چیست؟ مراجعه بفرمایید
بر اساس تحقیقات انجام شده، 98 درصد اپلیکیشنهای موبایل ناامن هستند. دلیل اصلی این امر، اشتباهی بزرگ در رویه توسعه برنامه (اپلیکیشن) است که در آن تستهای امنیتی به آخرین مراحل از توسعه واگذار میشوند؛ یا حتی بدتر، گاها هیچ تستی انجام نمیگردد.
برخی از مباحثی که در این مقاله به آنها خواهیم پرداخت عبارتاند از:
- آمارهای شگفتآور از هک اپلیکیشنهای موبایل
- خطرات امنیتی رایج برای اپلیکیشنهای موبایل
- گامهای اجرایی لازم در تست امنیت اپلیکیشن موبایل
- ارائه برخی از ابزارهای خودکار در انجام تست
آمارهای شگفتآور از هک برنامههای موبایل
بنابر مطالعه انجام شده توسط App Annie، تا پایان سال 2019، دانلود اپلیکیشنهای مختلف به بیش از 204 میلیارد بار رسیده است. همچنین، در حدود 120 میلیارد دلار صرف خرید این اپلیکیشنها شده است. اگرچه محبوبیت اپلیکیشنهای موبایل کاملا مشهود است، اما خطرات مرتبط با امنیت اپلیکیشن موبایل (Mobile Application Security) نیز در حال افزایش است. موارد زیر، نمونههایی آماری درجهت ترسیم سطح و میزان امنیت برنامههای موبایل موجود هستند:
- از هر 36 دستگاه، 1 دستگاه از جانب یک تهدید امنیت اپلیکیشن موبایل در معرض خطری جدی است.
- نزدیک به 10000 عدد از اپلیکیشنهای سطح پایین، 28 درصد از کل حملات را به خود اختصاص دادهاند.
- 71 درصد از تراکنشهای کلاهبرداری از طریق برنامههای موبایل و مرورگرهای موبایل انجام میگیرند.
انواع اپلیکیشنهای موبایل
- وب اپلیکیشنها: اپلیکیشنهای کاربردی وب که در قالب HTML ساخته و از طریق گوشیهای همراه به آن دسترسی دارید.
- اپلیکیشنهای بومی: این نوع برنامهها، برای یک سیستم عامل خاص ساخته میشوند و از ویژگیهای بالقوه آن سیستم عامل استفاده میکنند.
- اپلیکیشنهای ترکیبی: شبیه انواع بومی هستند، با این تفاوت که خواصی از وباپلیکیشنها را نیز به ارث میبرند.
معیارهایی در تست امنیت اپلیکیشن موبایل (Mobile Application Security)
تحلیل تهدید و مدلسازی
اولین گام، تولید تهدیدهای بالقوه و تحلیل آنها است. این فرایند از طریق پارامترهای زیر اجرایی میشود:
- در حین دانلود یک برنامه، اگر اپلیکیشن، اطلاعاتی چون مشخصات کاربری یا اطلاعات حساب را در فروشگاه برنامه ذخیره کند، ممکن است در آینده این اطلاعات نشت کنند. بنابراین، باید امکان وقوع چنین شرایطی بررسی و خطرات متناسب با آن تحلیل گردند.
- اگر برنامهها اطلاعات کاربری را ذخیره میکنند، توسعهدهندگان باید تهدیدهای احتمالی متناظر با این ذخیرهسازی را بررسی کنند.
- باید امکان بررسی و ارزیابی اطلاعات نمایشداده شده فراهم شود، زیرا مهاجمان میتوانند از راههای مختلف جاسوسی، دادههای حیاتی را سرقت کنند.
- متناظر با سرعت بالای اینترنت، اپلیکیشنها میتوانند با سرعتهای بالایی اطلاعات را دریافت یا ارسال کنند. به منظور جلوگیری از سرقت آنها، باید اطلاعات را رمزگذاری کرد.
- اتصال متقابل با سایر اپلیکیشنها و خدمات جانبی باید ایمن باشد. هرگونه آسیبپذیری جزئی میتواند کلیت خدمات اپلیکیشن را به چالش بکشد.
تجزیه و تحلیل آسیبپذیریهای موجود در برنامههای موبایل
در طول تجزیه و تحلیل آسیبپذیری اپلیکیشن، باید از نظر وجود شکافهای امنیتی، نحوه پاسخگویی به تهدیدها و امکان مقابله با خطرات در زمان واقعی، اپلیکیشن بررسی شود. قبل از شروع این مرحله، مطمئن شوید که لیستی از آسیبپذیریها را برای بررسی و قالبی برای ثبت یافتههای خود در اختیار دارید. تجزیه و تحلیل کامل آسیبپذیری شامل بررسی اجزاء در سطوح گستردهتر، ازجمله شبکه، سیستم عامل تلفن و سختافزار آن میشود.
اندروید در مقابل IOS در امنیت برنامه موبایل (Mobile Application Security)
اگرچه ادعای ضعف کلی توسعه دهندگان اپلیکیشن در مورد امنیت برنامههادرست نیست، اما نمیتوان وجود ایرادهای اساسی را منکر شد. درواقع، هک شدن بسیاری از اپلیکیشنها نشان از وجود نقصهایی ساختاری در آنها دارد. اپلیکیشنهای اندروید کم و بیش متفاوت از همتایان IOS خود توسعه یافته و توزیع شدهاند. بنابراین، مسائل امنیتی متناظر با این دو پلتفرم نیز متفاوت خواهند بود.
مشکلات امنیتی اپلیکیشن موبایل در اندروید:
آمارها نشان میدهند که اپلیکیشنهای موبایل تحت اندورید، بیشتر از انواع موجود در iTunes مورد حمله قرار گرفتهاند. یکی از اصلیترین دلایل در این واقعیت، محیط متنباز (Open source) اندروید است. به این معنی که، هر کسی آزاد است که در توسعه اپلیکیشنهای مختلفT از کدهای اندرویدی استفاده یا آنها را تغییر دهد.
علاوه بر این، در سیستم عامل اندروید، یک فرایند غربالگری دقیق و ایمن وجود ندارد و توسعه اپلیکیشنهای مختلف بدون عبور از فیلترهای امنیتی اجرا میشود. در غیاب غربالگری و آزمایش کامل برنامهها، سیستم عامل اندروید به خانهی آسیبپذیرترین اپلیکیشنهای موبایل، هم از نظر تعداد و هم از نظر شدت حملات، تبدیل شده است.
اصلیترین مشکلات متناظر با اپلیکیشنهای اندروید عبارتاند از:
- MITM (حملات با حضور عامل انسانی)
- کریپتو جکینگ
- تبلیغات بد
- فیشینگ و مهندسی اجتماعی
- مشکلات مرتبط با مجوز
- روتینگ یا ریشهیابی اندروید
اگر مشتاق هستید بیشتر با مفهوم مهندسی اجتماعی آشنا شوید، پیشنهاد ما مطالعه مقاله زیر است
مهندسی اجتماعی (Social Engineering) چیست؟
مشکلات امنیت برنامههای موبایل در IOS:
به دلیل وجود محیط توسعه بسته، اپلیکیشنهای مبتنی بر IOS سطح آسیبپذیری کمتری نسبت به انواع اندرویدی دارند. همچنین، فرایند غربالگری دقیقتر و کاملتری در اپلیکیشنهای IOS صورت میگیرد.
با این وجود، نباید فرض شود که اپلیکیشنهای IOS عاری از خطرات امنیتی هستند. بنا بر تحقیقات، قشر مرفه جامه بیشتر از دیگران از سیستم عامل IOS استفاده میکنند. بنابراین، این سیستم عامل به اهداف اخاذی توسط هکرها تبدیل میشود. به عبارتی، با وجود غربالگری امنیتی و محیط بسته آن، IOS نتوانسته از تمام حملات هکری پرهیز کند. موارد متعددی وجود دارند که اپلیکیشنهای مبتنی بر IOS و اطلاعات آنها توسط هکرها هک شدهاند.
مشکلات امنیتی عمدهای که در اپلیکیشنهای تحت سیستم عامل IOS یافت میشوند:
- ذخیرهسازی دادهها در دستگاه به صورت محلی
- عمل جیلبرک
- فیشینگ و مهندسی اجتماعی
- امکان تغییر مسیر 301
- گواهیهای دزدیدهشده برای میزبانی از اپلیکیشنها
علاوه بر خطرات امنیتی ناشی از ساختار اصلی و محیط این دو سیستم عامل، مسائل امنیتی رایج دیگری نیز وجود دارند که اپلیکیشنهای موبایل با آنها مواجهاند. بر اساس گزارش OWASP در سال 2016، 10 مسئله اساسی در امنیت اپلیکیشنهای موبایل عبارتاند از:
- استفاده نادرست از پلتفرم
- ذخیره اطلاعات به صورت ناامن
- ارتباطات ناامن
- ارائه مجوزهای ناامن
- رمزگذاری ناکافی
- کیفیت پایین کدها
- دستکاری کدها
- مهندسی معکوس
- عملکرد خارجی
مشکلات توسعه در امنیت اپلیکیشنهای موبایل (Mobile Application Security)
برخی از مشکلات امنیتی در سیستم عاملهای اندروید و IOS از شیوههای توسعه و نگهداری ضعیف اپلیکیشنها ناشی میشوند. موارد زیر از جمله اشتباهاتی هستند که توسعهدهندگان در هنگام ساخت برنامهها (Apps) مرتکب میشوند:
- عدم ایمنسازی اجزای اپلیکیشنها
- نادیده گرفتن ارتباطهای بین – فرایندی ناامن
- عدم توجه به ذخیرهسازی ایمن اطلاعات
- عدم استفاده از پیوندهای سراسری
- نادیده گرفتن نقصهای موجود در پیکربندی (نقصهایی شامل افشای اطلاعات حساس در پیامهای خطا، اثر انگشت در سرصفحههای HTPP و …)
- تست نکردن کدها در مراحل مختلف توسعه
- عدم وجود یک برنامه جامع برای ذخیرهسازی و ثبت نقاط آسیبپذیر اپلیکیشن
- سرهمبندی کند کدها
اهمیت تست امنیت اپلیکیشن موبایل (Mobile Application Security)
بهترین راه برای جلوگیری از هرگونه مشکل امنیتی در اپلیکیشنهای موبایل، هک هدفمند اپلیکیشن توسط خود توسعهدهندگان است. تست امنیت اپلیکیشن موبایل، بهترین راه برای انجام این فعالیت است. در حالت ایدهآل، قبل از اینکه برنامه (Application) را برای استفاده عموم ارائه دهید، یک تست امنیت اپلیکیشن موبایل را بر روی آن اجرا کنید. چنانکه اپلیکیشن را قبلا ارائه کردهاید، بهترین زمان برای اجرای این تست، همین امروز است.
برای آشنایی بیشتر با تست امنیت اپلیکیشنها، میتوانید به مقاله زیر مرجعه کنید
تست استاتیک امنیت اپلیکیشن (SAST) چیست؟
تست امنیت اپلیکیشن موبایل شامل دو فرایند ارزیابی آسیبپذیری (VA) و تست نفوذ (Penetration Test) است که معمولا پشت سرهم انجام میشوند:
ارزیابی آسیبپذیری (VA): شامل ارزیابی زیرساخت و مکانیسم امنیتی اپلیکیشن به منظور شناسایی آسیبپذیریها و حفرههای احتمالی در اپلیکیشن است. تست نفوذ: همانطور که از نام آن پیداست، شامل بهرهبرداری از آسیبپذیریهای موجود در VA و به منظور ارزیابی دامنه آسیب هک احتمالی از دریچه آن آسیبپذیری موجود در برنامه است که پیشتر به آن اشاره شد. به عبارت سادهتر، اولی آسیبپذیریها را فهرست میکند و دومی تصویر واضحی از شدت آنها ارائه میدهد.
چگونه امنیت اپلیکیشن موبایل را افزایش دهیم؟
هدف ممیزی امنیتی را تعریف کنید
ممیزیهای امنیتی بسیار گسترده و چند منظوره هستند. بنابراین قبل از شروع فرایند، دلیل اصلی خود در اجرای آنها را مشخص کنید.
به دنبال یافتن و اصلاح چه چیزی هستید؟
آیا در انتهای فرایند اقدامات خاصی باید اجرا شوند؟
پس از پاسخ به این سوالات، فهرستی از اولویتهای امنیتی را فراهم کنید تا قدم به قدم به آنها پرداخته شود. سپس، همانطور که پیش میروید و این اولویتها را پوشش میدهید، به موارد جدید و از قبل پیشبینی نشده نیز بپردازید.
هدف از تست امنیت اپلیکیشن موبایل
اهداف تست امنیت اپلیکیشن موبایل(Mobile Security Testing) میتواند یکی از موارد زیر (یا چند مورد همزمان) باشد:
- بررسی اینکه آیا مکانیزم امنیتی خاصی وجود دارد یا خیر
- برای تایید وجود یک چهارچوب در کنترل و مدیریت
- بررسی اینکه آیا تنظیمات درستی انجام گرفتهاند یا خیر
- بررسی این مورد که آیا اپلیکیشن در مراحل مختلف آزمایش شده است و با تستهای مختلفی محک زده شده است
- چک کردن تمام رمزگذاری ارتباطات بین یک کاربر و برنامه و ارتباطات بین سرورها و اپلیکیشن
- تشخیص، مدیریت و اقدام در مواجه با تهدیدهای ممکن برای اپلیکیشن
- بررسی کردن فرایند احراز هویت و کیفیت مناسب آن
- برای بررسی درستی سشنها و کوکیهای موجود در برنامه
- برای بررسی اینکه الزامات امنیتی لازم در مدیریت قرارداد برآورد شده است
- در جهت اطمینان از ذخیرهسازی ایمن دادهها
همچنین مناطقی از اپلیکیشن که باید در اولویت قرار گیرند شامل موارد زیر هستند:
- مجوزهای برنامه
- پیکربندی
- احراز هویت و مجوز
- سشنها و کوکیها
- ذخیرهسازی اطلاعات
تحلیل و مدلسازی تهدید
این فرایند برای شناسایی تهدیدات بالقوه در یک سیستم است. تحلیل و مدلسازی تهدید شامل چهار جزء اصلی زیر است:
- معماری اپلیکیشن
- منابع اپلیکیشن (برنامه)
- تعامل با سوم – شخص
- عوامل تهدید
همزمان با ارزیابی سطح آسیبپذیری اپلیکیشن موبایل خود، بدبین بودن در فرایند انجام یک رویکرد مثبت است. بخصوص، به تمام اجزاء و عملکردهایی که میتوانند دریچهای به روی هکرها بگشایند فکر کنید. از آنجایی که فهرستی مشابه آنچه در بالا ارائه کردیم را در اختیار دارید، ابتدا با بندهای این لیست شروع کنید. برای هر مرحله، خطرات امنیتی بالقوه را شناسایی و بررسی کنید. برای دریافت یک نتیجه دقیق، موارد آزمایشی را توسعه دهید (در عملکردهای مختلف برنامه، سیستم عاملها، نسخهها، نقشهای کاربری و … تغییر ایجاد کنید) و اپلیکیشن را متناظر با این تغییرات ارزیابی کنید.
برای تسریع در فرایند تحلیل تهدید و مدلسازی برای امنیت اپلیکیشن موبایل (Mobile Application Security) خود میتوانید از ابزارهای خودکار زیر بهره بگیرید:
(ADB)Android Debug Bridge: یک ابزار خط فرمان برای ارزیابی و اشکالزدایی از اپلیکیشنهای تلفن همراه است. ADB یک برنامه مشتری- سرور است که از سه جزء مشتری، سرور و تهدید شکل گرفته است. ADB یک ابزار تست امنیتی فوقالعاده است؛ با این حال، تنها برای سیستم عامل اندروید کارایی دارد. همچنین، در پکیج Android SDK Platform-Tools نیز به آن دسترسی خواهید داشت. درنهایت، میتوانید ADB را مستقیما از اینجا دانلود کنید.
چهارچوب امنیتی موبایل (MobSF): MobSF یک چهارچوب تست امنیت خودکار برای سیستم عاملهای اندورید، IOS و ویندوز است. این ابزار، تحلیلهای استاتیک و پویایی را از تست امنیت اپلیکیشن موبایل ارائه میدهد. برای نصب MobSF به این راهنما دقت کنید.
امنیت اپلیکیشن موبایل IOS (IMAS): این ابزار، یک چهارچوب تست امنیتی در IOS و به منظور کشف آسیبپذیریها در یک اپلیکیشن موبایل تحت IOS است. iMAS در تشخیص آسیبپذیریهای مربوط به کنترلهای امنیتی، CWE، رمز عبور سیستم، جیلبریک، اشکالزدایی، ذخیرهسازی فلش و زنجیره کلید، بسیار خوب عمل میکند.
مرحله بهرهبرداری در امنیت اپلیکیشن موبایل (Mobile Application Security)
تحلیل تهدید 50 درصد از کل کار است. تا به اینجا، میدانید که چه آسیبپذیریهای احتمالی اپلیکیشن شما را تهدید میکنند و تستهایی که آنها را تشخیص میدهند را میشناسید. اکنون، تنها کاری که باید انجام دهید این است که دامنه این آسیبپذیریها را تخمین بزنید. یعنی محدوده نفوذ این آسیبپذیریها و ایجاد آسیب به نواحی مختلف را تشخیص دهید.
ابزارهای امنیت اپلیکیشن موبایل (Mobile Application Security)
ابزارهایی که به این منظور میتوانید استفاده کنید عبارتاند از:
ابزار کیت بررسی سریع اندروید (QARK)
- QARK یک ابزار خودکار تست نفوذ برای اپلیکیشنهای اندروید است که توسط LinkedIn توسعه یافته است. با استفاده از آن، میتوانید تمام اجزای اپلیکیشن موبایل خود را اسکن کنید تا هرگونه پیکربندی نادرست و تهدید احتمالی را شناسایی کنید. همچنین، با استفاده از QARk، میتوانید به مشکلات اصلی در نسخه اندروید مورداستفاده پی ببرید.
پروکسی حمله زد (ZAP)
ZAP یک ابزار تست امنیت اپلیکیشن موبایل رایگان است که توسط هزاران عامل اجرای تست نفوذ از سراسر جهان استفاده میشود. ZAP را OWASP توسعه داده و یکی از بهترین ابزارها برای تست امنیت به صورت دستی است.
ابزار Mitmproxy در امنیت اپلیکیشن موبایل (Mobile Application Security)
- یک ابزار رایگان و متن باز برای شناسایی آسیبپذیریهای موجود در اپلیکیشن موبایل است. Mitmproxy یک پروکسی HTTP است که میتوان از آن برای رهگیری، بازرسی، اصلاح و پخش مجدد ترافیک وب در یک اپلیکیشن موبایل استفاده کرد. این ابزار یک راه حل عالی برای بهرهبرداری از ارتباطات سرویس گیرنده- سرور از اپلیکیشن موبایل و شناسایی آسیبپذیریهای اساسی است.
اصلاح
تست نفوذ برای اپلیکیشنهای موبایل چیست و چه کاربردی دارد؟
تاکنون شما یک هدف قطعی برای ممیزی تعیین کردهاید، برنامه خود و زیرساخت پشتیبانی آن برای یافتن آسیبپذیریها را تجزیه و تحلیل کردهاید، از آسیبپذیریها برای تعیین سطح بحران امنیتی موجود استفاده کردهاید؛ اکنون زمان آن رسیده که لیستی نهایی از آسیبپذیریها و شدت هر کدام را تهیه کنید. در این مرحله، آسیبپذیریها را با تمرکز بیشتر بر موارد حیاتی، برطرف میکنید.