ارزیابی امنیت اندروید (MSTG)

ارزیابی امنیت اپلیکیشن اندروید بر اساس OWASP MSTG

درباره این سرویس

ارزیابی امنیت اپلیکیشن اندروید ما یک بازبینی گسترده‌ی یک اپلیکیشن اندرویدی است که راهنمای OWASP MASVS و همراه آزمونش، یعنی OWASP MASTG، آن را هدایت می‌کند. اپلیکیشن را از چند زاویه می‌آزماییم: داده‌ای که روی دستگاه نگه می‌دارد (SharedPreferences، پایگاه‌داده‌ی SQLite، فایل‌ها و کش‌ها)، شیوه‌ی رمزنگاری داده و نگه‌داری کلید، اجزایی که در معرض دیگر اپلیکیشن‌ها می‌گذارد (activityها، serviceها، broadcast receiverها و content providerها) و ارتباط بین‌فرآیندی که از راه intentها جریان می‌یابد، امنیت ترافیک شبکه و مدیریت گواهی، و این‌که اپلیکیشن چقدر در برابر مهندسی معکوس و دستکاری مقاومت می‌کند. یک دستگاه به‌آسانی گم، به اشتراک گذاشته یا روت می‌شود، پس اپلیکیشن باید زمانی هم که پلتفرم پیرامونش قابل‌اعتماد نیست دوام بیاورد. هر یافته را تا یک اثبات عملی دنبال می‌کنیم، در کنار اثر واقعی‌اش با CVSS رتبه می‌دهیم و همراه با یک رفع مشخص می‌نویسیم.

چه چیزی شامل می‌شود

ذخیره‌سازی داده‌ی محلی: SharedPreferences، پایگاه‌داده‌ی SQLite، فایل‌ها، حافظه‌ی خارجی، لاگ‌ها و کش‌ها

رمزنگاری و مدیریت کلید، از جمله استفاده از Android Keystore

اجزای در معرض بیرون؛ activityها، serviceها، broadcast receiverها و content providerها؛ و مجوزهای آن‌ها

ارتباط بین‌فرآیندی از راه intentها، deep linkها و pending intentها

احراز هویت، مدیریت session و نگه‌داری token روی دستگاه

ارتباط شبکه، پیکربندی TLS، و اعتبارسنجی و pinning گواهی

پیکربندی امنیت شبکه، تنظیمات WebView و استفاده از APIهای پلتفرم

مقاومت در برابر مهندسی معکوس و دستکاری: مبهم‌سازی، تشخیص روت و دیباگر، و بسته‌بندی مجدد

secretهای سمت‌کاربر و منطق حساسی که در APK افشا شده است

حریم خصوصی: چه داده‌ای دستگاه را ترک می‌کند، به‌سوی چه کسی، و با چه رضایتی

چگونه کار می‌کند

1
دامنه‌گذاری و دسترسی
محدوده را توافق می‌کنیم و عمق تست را تعیین می‌کنیم: جعبه‌سیاه تنها از روی APK، جعبه‌خاکستری با حساب‌های آزمایشی و مستندات، یا جعبه‌سفید با دسترسی به کد برای عمیق‌ترین پوشش. یک نسخه‌ی قابل‌تست از اپلیکیشن، حساب آزمایشی برای هر نقش، و یادداشتی درباره‌ی هر بک‌اندی که باید بیرون از دامنه بماند درخواست می‌کنیم. تست معمولاً روی یک بک‌اند staging اجرا می‌شود تا داده و کاربران محیط عملیاتی هرگز لمس نشوند.
2
تحلیل ایستا و ذخیره‌سازی
APK را باز می‌کنیم و manifest، اجزای در معرض بیرون، مجوزها و پیکربندی امنیت شبکه را بازبینی می‌کنیم. اپلیکیشن را اجرا می‌کنیم و آنچه را روی حافظه می‌نویسد بررسی می‌کنیم؛ تنظیمات، پایگاه‌داده، فایل‌ها، لاگ‌ها و کش‌ها؛ و این‌که آیا چیز حساسی به‌صورت رمزنشده، روی حافظه‌ی خارجی یا در یک پشتیبان باقی می‌ماند.
3
تست پویا و پلتفرم
اپلیکیشن در حال اجرا را می‌آزماییم: احراز هویت و مدیریت session، رمزنگاری و نگه‌داری کلید، و اجزای در معرض بیرون و intentهایی که دیگر اپلیکیشن‌ها می‌توانند به آن‌ها برسند. ترافیک شبکه را رهگیری می‌کنیم تا TLS، اعتبارسنجی گواهی و pinning را بررسی کنیم، و deep linkها، WebViewها و APIهای پلتفرمی را که اپلیکیشن به آن‌ها تکیه دارد وارسی می‌کنیم.
4
مهندسی معکوس و تاب‌آوری
اپلیکیشن را معکوس می‌کنیم تا آنچه را یک مهاجم مصمم می‌بیند ببینیم: secretها و منطقِ جامانده در کد، و این‌که اپلیکیشن چقدر در برابر دستکاری، بسته‌بندی مجدد و اجرا روی دستگاه روت‌شده یا hookشده مقاومت می‌کند. سطح درست تاب‌آوری به آنچه اپلیکیشن محافظت می‌کند بستگی دارد و آن را متناسب با همان تعیین می‌کنیم.
5
اعتبارسنجی، گزارش‌دهی و تست مجدد
هر یافته با یک اثبات مفهوم تکرارپذیر تأیید می‌شود، به دسته‌ی MASVS مربوط به خودش نگاشت می‌شود، با CVSS و اثر واقعی کسب‌وکار رتبه می‌گیرد و همراه با یک رفع اولویت‌دار نوشته می‌شود. پس از رفع، دوباره تست می‌کنیم تا مطمئن شویم رفع‌ها پابرجا هستند.
خروجی‌ها
  • خلاصه‌ی اجرایی با نمای کلی ریسک برای تصمیم‌گیرندگان
  • گزارش فنی تفصیلی، هر یافته با اثبات مفهوم تکرارپذیر
  • یافته‌ها با نگاشت به دسته‌های OWASP MASVS
  • یافته‌های ذخیره‌سازی، رمزنگاری و مدیریت کلیدِ ویژه‌ی دستگاه
  • یافته‌های اجزای در معرض بیرون، ارتباط بین‌فرآیندی و ارتباط شبکه
  • ارزیابی مهندسی معکوس و تاب‌آوری، متناسب با ریسک اپلیکیشن
  • شدت CVSS و اثر کسب‌وکار برای هر یافته
  • نقشه‌ی راه رفع با اولویت، و تست مجدد پس از رفع

چرا وادی ایمن حافظ

پوشش استانداردمحور
ارزیابی از OWASP MASVS و MASTG پیروی می‌کند، پس پوشش در ذخیره‌سازی، رمزنگاری، احراز هویت، شبکه، پلتفرم و تاب‌آوری به‌جای سلیقه‌ای بودن، روشن و قابل بررسی است.
عمق پلتفرم اندروید
می‌دانیم اندروید چگونه اپلیکیشن‌ها را جدا می‌کند، اجزا و intentها چگونه یک اپلیکیشن را در معرض دیگران می‌گذارند، و Keystore چگونه کلیدها را محافظت می‌کند، پس ریسک‌های پلتفرمی را می‌یابیم که یک اسکنر عمومی از دست می‌دهد.
مهارت مهندسی معکوس
اپلیکیشن را همان‌طور که یک مهاجم مصمم می‌نگرد بررسی می‌کنیم؛ با decompile، hook و اجرا روی دستگاه روت‌شده؛ تا secretها و دفاع‌هایی را که فقط زیر فشار واقعی آشکار می‌شوند بیازماییم.
یافته‌های قابل اجرا و اولویت‌دار
راهنمایی روشن و اولویت‌بندی‌شده بر پایه‌ی ریسک، با اثبات مفهوم تکرارپذیر و یک رفع مشخص برای هر یافته.

سوالات متداول

ارزیابی امنیت اپلیکیشن اندروید چیست؟

یک بازبینی گسترده‌ی امنیتی از یک اپلیکیشن اندرویدی است که OWASP MASVS و MASTG آن را هدایت می‌کند. ذخیره‌سازی داده‌ی محلی، رمزنگاری و مدیریت کلید، اجزای در معرض بیرون و ارتباط بین‌فرآیندی، ارتباط شبکه، استفاده از APIهای پلتفرم، و مقاومت در برابر مهندسی معکوس را پوشش می‌دهد و هر یافته اثبات و رتبه‌بندی می‌شود.

این ارزیابی با سرویس تأیید MASVS شما چه تفاوتی دارد؟

سرویس تأیید MASVS یک اپلیکیشن را در برابر یک سطح اطمینانِ انتخاب‌شده‌ی MASVS بررسی می‌کند و پوشش را نسبت به همان استاندارد گزارش می‌دهد. این ارزیابی، تست عملیِ گسترده‌ی زیرین آن است: اپلیکیشن را در ذخیره‌سازی، پلتفرم، شبکه و تاب‌آوری به کار می‌گیریم تا مسائل واقعی و قابل بهره‌برداری را بیابیم. بسیاری از تیم‌ها نخست این را اجرا می‌کنند و هنگامی که به گواهی یک سطح نیاز دارند سراغ تأیید می‌روند.

به چه دسترسی و مواردی نیاز دارید؟

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

آیا بک‌اند API را هم تست می‌کنید؟

این ارزیابی بر اپلیکیشنِ روی دستگاه و امنیت ارتباط آن تمرکز دارد. اگر می‌خواهید بک‌اند API هم در کنار اپلیکیشن به‌صورت end-to-end تست شود، ارزیابی ترکیبی موبایل و API ما هر دو و یکپارچگی میانشان را پوشش می‌دهد.

تست روی محیط عملیاتی انجام می‌شود یا staging؟

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

اگر گوشی قفل باشد، آیا ذخیره‌سازی محلی ناامن واقعاً یک خطر است؟

می‌تواند باشد. یک دستگاه گم، به اشتراک گذاشته، پشتیبان‌گیری یا روت می‌شود، و داده‌ای که رمزنشده نوشته شده (در تنظیمات، پایگاه‌داده، لاگ‌ها یا حافظه‌ی خارجی) برای اپلیکیشنی دیگر یا برای هرکس که دستگاه را در دست دارد خواندنی می‌شود. بررسی می‌کنیم چه چیزی ذخیره می‌شود، آیا لازم است، و آیا محافظت شده است.

شدت یافته‌ها چگونه تعیین می‌شود؟

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

آیا اپلیکیشن باید روی Play Store منتشر شده باشد؟

نه. همان نسخه‌ای را که به ما می‌دهید تست می‌کنیم، چه منتشر شده باشد، چه در تست داخلی و چه یک نسخه‌ی نامزد انتشار. تست پیش از انتشار معمولاً زمان بهتری است، چون رفع‌ها پیش از کاربران شما اعمال می‌شوند.

آیا تست مجدد پس از رفع انجام می‌شود؟

بله؛ پس از رفع، یافته‌های گزارش‌شده را دوباره تست می‌کنیم تا مطمئن شویم هر رفع پابرجاست. مدت زمان به اندازه و پیچیدگی اپلیکیشن بستگی دارد و پس از دامنه‌گذاری برآورد دقیق می‌دهیم.

آماده شروع هستید؟
با تیم ما تماس بگیرید تا در مورد نیازهای ارزیابی امنیتی شما صحبت کنیم