چرا برنامه های موبایلی پرداخت و بانکی آسیب پذیر هستند؟
بسیاری از طراحان و برنامه نویسان برنامه های موبایل، بهویژه توسعهدهندگان حوزه اپلیکیشنهای بانکداری و پرداخت بر این باورند که با توجه به محدود بودن حجم و کد برنامه های موبایلی ایشان و انجام بسیاری از فعالیتها و فرآیندها در سمت سرور عملا آسیبپذیری اپلیکیشن کاهش یافته و امنیت برنامه موبایل تا حد زیادی حفظ می گردد. ولی آیا این تصور درست است؟ به طور کلی در برنامه های موبایل به اصطلاح تین کلاینت (که عمده فعالیت ها در آنها در سمت سرور است) تا چه حدی امنیت اطلاعات افزایش یافته و چه مسائلی باید مدنظر قرار گیرد؟ در ادامه ضمن تعریف برنامه های موبایل تین کلاینت (Thin-client mobile applications) به عنوان یکی از معماریهای رایج در برنامهنویسی اپلیکیشن های موبایل، در رابطه با روشهایی که مهاجمین و هکرها جهت به مخاطره انداختن این دسته از برنامه ها به کار می گیرند و همچنین روش های مقابله با آنها می پردازیم.
برنامه های موبایل تین کلاینت
به طور کلی سه روش اصلی برای ارائه سرویس های دادهای به کاربران موبایلی وجود دارد که عبارتند از: پیام کوتاه (SMS)، برنامههای تین کلاینت (Wap) و همچنین برنامه های تیک کلاینت (Thick-client). هر یک از این روش ها با توجه به سرویس مدنظر برای ارائه به کاربر موبایل و دیگر المانها نظیر سرعت و پایداری ارتباطات و اینترنت و یا تمهیدات امنیتی توسط توسعهدهندگان برنامهها انتخاب شده و بکارگرفته می شوند.
برنامه موبایل تین کلاینت، یک اپلیکیشن سبک و کم حجم است که کدهای برنامه نویسی کمی را بر روی دستگاه کاربر اجرا نموده و عمده فعالیت ها و منطق فرآیندی و کسب و کار را در سمت سرویسدهنده مدیریت می نماید. فعالیتهایی همچون اعتبارسنجی درخواستها از سوی کاربر و یا پردازش های اصلی به جای اجرا در سمت کلاینت، در سمت سرور انجام می شود. در اینگونه برنامهها معمولا فعالیت خود اپلیکیشن (سمت کلاینت) محدود به اجرای رابط کاربری، دریافت دادهها و اقدامات ورودی از کاربر و همچنین نشان دادن نتایج و خروجیها می شود. این نوع معماری برنامه های کاربردی در بسیاری از نرم افزارهای موبایلی بانکداری و یا پرداخت بسیار متداول بوده و به وفور به چشم میخورد.
دلایل آسیب پذیری برنامه های موبایل تین کلاینت
همان طور که اشاره شد انتخاب معماری اپلیکیشن موبایلی توسط توسعهدهندگان به فاکتورهای متفاوتی بستگی دارد یکی از دلایل مهم در انتخاب معماری تین کلاینت، امنیت بهتر و بیشتر در این شیوه برنامهنویسی است. طبیعی است که با توجه به حجم کد کمتر در سمت کلاینت، سطح حملات به صورت کلی کاهش مییابد و طراحان با اطمینان بیشتری نسبت به محافظت از برنامه در سمت سرور اقدام مینمایند. اما این مزیت غیرقابل انکار در این نوع برنامهها نباید منجر به ایجاد این تفکر در ذهن شما گردد که برنامههای موبایلی تین کلاینت در مقابل کلیه حملات مهاجمین مصون هستند و یا اصلا هک نمیشوند، بر این اساس ذکر این نکته ضروری است که با وجود کاهش چشمگیر احتمال وقوع بسیاری از حملات در این حالت، بسیاری از آسیب پذیری ها به قوت خود باقی میمانند که میبایست اقدامات تقابلی و تمهیدات مناسب امنیتی برای آنها درنظر گرفته شود. در ادامه به بررسی حملات و آسیب پذیری های مذکور می پردازیم:
- برنامه تین کلاینت شما می تواند به عنوان یک راه و بردار تهاجمی برای دستیابی و مورد مخاطره قرار دادن اطلاعات سمت سرور توسط هکر مورد استفاده قرار گیرد. به عنوان مثال در حملات دسته هوکینگ (Hooking) مهاجم سعی می کند عکس العملها و نوع رفتار اپلیکیشن را در مواجهه با محرک ها و حالات مختلف را بررسی نموده و با کشف نقاط ضعف احتمالی، از آن برای حمله استفاده نماید. بدین ترتیب فریم ورک های هوکینگ نظیر (Frida, Xposed و غیره) به مهاجمان این امکان را میدهند تا با دسترسی به اطلاعات حافظه و بررسی آن، وضعیت رفتار و نحوه برقراری ارتباط میان کلاینت و سرور را مورد مطالعه قرار دهند. در مرحله بعدی، مهاجم می تواند با استفاده از همان فریم ورکها اقدام به تزریق و ارسال کدهای غیرمجاز به سمت سرور نماید و موجب حملات DOS شود و یا رفتاری غیرطبیعی را در آن سمت اجرا نماید.
- برنامه های تین کلاینتی که درهم ریخته نمی باشند و رمز نشده اند (به اصطلاح Obfuscate نشده اند) به راحتی می توانند توسط مهاجمان دستکاری شده و نسخه غیراصل از طرق مختلف در اختیار کاربران جدید قرار گیرد. بدین ترتیب مهاجمان می توانند کدهای بدخواه خود که عمدتا حاوی بدافزارها و جاسوس افزارها (Spyware & Malware) هستند را در برنامه شما قرار داده و از این طریق به اطلاعات کاربر دست پیدا نمایند. این نوع حمله به عنوان یکی از انواع متداول حملات در خصوص برنامه های موبایل شناخته میشود.
- یک برنامه تین کلاینت موبایلی تقریبا منطق فرآیندی بسیار ساده و محدودی دارد ولی با این وجود بسیاری از آسیب پذیری ها برای آن مانند سایر برنامه ها وجود خواهد داشت. اطلاعات کاربر (نظیر کلمات عبور، پین کدها و غیره) مانند سایر معماریهای برنامهای می توانند به راحتی مورد دسترسی و سرقت قرار گیرند و این امر می تواند توسط بدافزارها یا حملات مردمیانی (MITM) انجام شود. بر اساس تحقیقات و آمارهای حاصله در این خصوص، بسیاری از آسیب پذیری ها را می توان از طریق رابط کاربری مورد هجوم قرار داد.
- در بررسیهای انجام شده تعداد زیادی از آسیب پذیریهایی که هر روزه در خصوص برنامه های موبایلی و پلتفرم های اندروید و iOS کشف می شود قابل اجرا برای برنامه های تین کلاینت موبایلی نیز هستند. از نمونههای آن می توان به آسیب پذیری کلید اصلی در برنامه های اندرویدی اشاره کرد که در آن مهاجم می تواند بدون نیاز به شکستن امضای رمزنگاری موجود در فایل (APK) نرم افزاری که به صورت رسمی ساین و منتشر شده است، محتویات آن را تغییر دهد.
همان طور که اشاره گردید آسیب پذیری های برنامه های تین کلاینت (که اغلب برنامه های بانکی و پرداخت از این دست میباشند) نیز مانند سایر اپلیکیشن های موبایل کم نیستند و عواقب خطرناک ناشی از حملات در این برنامه ها میتوانند هم موجب تهدید کاربران و هم بروز ریسک های مالی و اعتباری برای سازمان ها و موسسات مالی و بانکی گردند.
چگونه اپلیکیشن خود را در برابر آسیب پذیری های تین کلاینت امن نماییم؟
همان طور که اشاره شد به دلیل تصور غلط برخی از توسعهدهندگان حوزه موبایل مبنی بر امن بودن ذاتی برنامه های موبایلی تین کلاینت، ممکن است توجه کافی در قبال امنیت این دسته از اپلیکیشن ها به خوبی در نظر گرفته نشده و تمهیدات امنیتی مورد نیاز مغفول واقع گردد. در خصوص این نوع از برنامه های موبایلی نیز می بایست مانند سایر اپلیکیشن ها، کنترل امنیتی مورد نیاز در مقابله حملات مهندسی معکوس و هک نرم افزار مدنظر قرار گیرد و اطمینان حاصل گردد که منابع و سورس کد برنامه به راحتی قابل بازگرداندن توسط مهاجم نمی باشد. همچنین استفاده از کنترل های امنیتیای چون SSL و تشخیص اثرانگشت جهت اعتبارسنجی ارتباط امن میان دستگاه و سرور پیشنهاد می گردد. از سوی دیگر برای اجتناب از حملات و فعالتهای پرمخاطرهای چون هوکینگ، دستکاری کد و روت نمودن می بایست یکپارچگی محیطی (کلاینت) که نرم افزار در آن در حال اجرا می باشد را به خوبی مورد بازرسی و کنترل درآوریم. این تمهیدات و کنترل های امنیتی می توانند تا حد زیادی برنامه موبایل شما را در برابر حملات و آسیب پذیریهایی که در محیط عملیاتی با آن روبرو است محافظت نمایند. در خصوص برنامه هایی که برای سیستم عامل اندروید نوشته می شوند ابزارهایی همچون ProGuard که به صورت رایگان در اختیار عموم است و نسخه به مراتب قوی تر و تجاری آن با عنوان DexGuard پیشنهاد می گردد (تفاوت ها و ویژگی های این دو محصول در این مقاله مورد بررسی قرار گرفته است). همچنین نسخه مربوط به iOS این محصول با عنوان iXGuard از طریق شرکت آشنا ایمن در ایران قابل تهیه میباشد.