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