راه پرداخت
رسانه فناوری‌های مالی ایران

چرا برنامه‌های موبایلی پرداخت و بانکی آسیب‌پذیر هستند؟

میلاد یداللهی؛ آشنا ایمن / بسیاری از طراحان و برنامه نویسان برنامه‌های موبایل، به‌ویژه توسعه‌دهندگان حوزه اپلیکیشن‌های بانکداری و پرداخت بر این باورند که با توجه به محدود بودن حجم و کد برنامه‌های موبایلی ایشان و انجام بسیاری از فعالیت‌ها و فرآیندها در سمت سرور عملاً آسیب‌پذیری اپلیکیشن کاهش‌یافته و امنیت برنامه موبایل تا حد زیادی حفظ می‌گردد. ولی آیا این تصور درست است؟ به‌طور کلی در برنامه‌های موبایل به‌اصطلاح تین کلاینت (که عمده فعالیت‌ها در آن‌ها در سمت سرور است) تا چه حدی امنیت اطلاعات افزایش یافته و چه مسائلی باید مدنظر قرار گیرد؟ در ادامه ضمن تعریف برنامه‌های موبایل تین کلاینت (Thin-client mobile applications) به‌عنوان یکی از معماری‌های رایج در برنامه‌نویسی اپلیکیشن‌های موبایل، در رابطه با روش‌هایی که مهاجمین و هکرها جهت به مخاطره انداختن این دسته از برنامه‌ها به کار می‌گیرند و همچنین روش‌های مقابله با آن‌ها می‌پردازیم.

 

برنامه‌های موبایل تین کلاینت

به‌طور کلی سه روش اصلی برای ارائه سرویس‌های داده‌ای به کاربران موبایلی وجود دارد که عبارت‌اند از: پیام کوتاه (SMS)، برنامه‌های تین کلاینت (Wap) و همچنین برنامه‌های تیک کلاینت (Thick-client). هر یک از این روش‌ها با توجه به سرویس مدنظر برای ارائه به کاربر موبایل و دیگر المان‌ها نظیر سرعت و پایداری ارتباطات و اینترنت و یا تمهیدات امنیتی توسط توسعه‌دهندگان برنامه‌ها انتخاب شده و به‌کارگرفته می‌شوند.

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

 

 دلایل آسیب‌پذیری برنامه‌های موبایل تین کلاینت

همان‌طور که اشاره شد انتخاب معماری اپلیکیشن موبایلی توسط توسعه‌دهندگان به فاکتورهای متفاوتی بستگی دارد یکی از دلایل مهم در انتخاب معماری تین کلاینت، امنیت بهتر و بیشتر در این شیوه برنامه‌نویسی است. طبیعی است که با توجه به حجم کد کمتر در سمت کلاینت، سطح حملات به‌صورت کلی کاهش می‌یابد و طراحان با اطمینان بیشتری نسبت به محافظت از برنامه در سمت سرور اقدام می‌نمایند؛ اما این مزیت غیرقابل‌انکار در این نوع برنامه‌ها نباید منجر به ایجاد این تفکر در ذهن شما گردد که برنامه‌های موبایلی تین کلاینت در مقابل کلیه حملات مهاجمین مصون هستند و یا اصلاً هک نمی‌شوند، بر این اساس ذکر این نکته ضروری است که باوجود کاهش چشمگیر احتمال وقوع بسیاری از حملات در این حالت، بسیاری از آسیب‌پذیری‌ها به قوت خود باقی می‌مانند که می‌بایست اقدامات تقابلی و تمهیدات مناسب امنیتی برای آن‌ها در نظر گرفته شود. در ادامه به بررسی حملات و آسیب‌پذیری‌های مذکور می‌پردازیم:

برنامه تین کلاینت شما می‌تواند به‌عنوان یک راه و بردار تهاجمی برای دستیابی و مورد مخاطره قرار دادن اطلاعات سمت سرور توسط هکر مورد استفاده قرار گیرد. به‌عنوان‌مثال در حملات دسته هوکینگ (Hooking) مهاجم سعی می‌کند عکس‌العمل‌ها و نوع رفتار اپلیکیشن را در مواجهه با محرک‌ها و حالات مختلف را بررسی نموده و با کشف نقاط ضعف احتمالی، از آن برای حمله استفاده نماید. بدین ترتیب فریم ورک های هوکینگ نظیر (Frida, Xposed و غیره) به مهاجمان این امکان را می‌دهند تا با دسترسی به اطلاعات حافظه و بررسی آن، وضعیت رفتار و نحوه برقراری ارتباط میان کلاینت و سرور را مورد مطالعه قرار دهند. در مرحله بعدی، مهاجم می‌تواند با استفاده از همان فریم ورک‌ها اقدام به تزریق و ارسال کدهای غیرمجاز به سمت سرور نماید و موجب حملات DOS شود و یا رفتاری غیرطبیعی را در آن سمت اجرا نماید.

برنامه‌های تین کلاینتی که درهم ریخته نمی‌باشند و رمز نشده‌اند (به‌اصطلاح Obfuscate نشده‌اند) به‌راحتی می‌توانند توسط مهاجمان دستکاری شده و نسخه غیر اصل از طرق مختلف در اختیار کاربران جدید قرار گیرد. بدین ترتیب مهاجمان می‌توانند کدهای بدخواه خود که عمدتاً حاوی بدافزارها و جاسوس‌افزارها (Spyware & Malware) هستند را در برنامه شما قرار داده و از این طریق به اطلاعات کاربر دست پیدا نمایند. این نوع حمله به‌عنوان یکی از انواع متداول حملات در خصوص برنامه‌های موبایل شناخته می‌شود.

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

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

همان‌طور که اشاره گردید آسیب‌پذیری‌های برنامه‌های تین کلاینت (که اغلب برنامه‌های بانکی و پرداخت از این دست می‌باشند) نیز مانند سایر اپلیکیشن های موبایل کم نیستند و عواقب خطرناک ناشی از حملات در این برنامه‌ها می‌توانند هم موجب تهدید کاربران و هم بروز ریسک‌های مالی و اعتباری برای سازمان‌ها و مؤسسات مالی و بانکی گردند.

 

چگونه اپلیکیشن خود را در برابر آسیب‌پذیری‌های تین کلاینت امن نماییم؟

همان‌طور که اشاره شد به دلیل تصور غلط برخی از توسعه‌دهندگان حوزه موبایل مبنی بر امن بودن ذاتی برنامه‌های موبایلی تین کلاینت، ممکن است توجه کافی در قبال امنیت این دسته از اپلیکیشن‌ها به‌خوبی در نظر گرفته نشده و تمهیدات امنیتی موردنیاز مغفول واقع گردد. در خصوص این نوع از برنامه‌های موبایلی نیز می‌بایست مانند سایر اپلیکیشن‌ها، کنترل امنیتی موردنیاز در مقابله حملات مهندسی معکوس و هک نرم‌افزار مدنظر قرار گیرد و اطمینان حاصل گردد که منابع و سورس کد برنامه به‌راحتی قابل بازگرداندن توسط مهاجم نیست. همچنین استفاده از کنترل‌های امنیتی‌ای چون SSL و تشخیص اثرانگشت جهت اعتبارسنجی ارتباط امن میان دستگاه و سرور پیشنهاد می‌گردد. از سوی دیگر برای اجتناب از حملات و فعالیت‌های پرمخاطره‌ای چون هوکینگ، دستکاری کد و روت نمودن می‌بایست یکپارچگی محیطی (کلاینت) که نرم‌افزار در آن در حال اجرا هست را به‌خوبی مورد بازرسی و کنترل درآوریم. این تمهیدات و کنترل‌های امنیتی می‌توانند تا حد زیادی برنامه موبایل شما را در برابر حملات و آسیب‌پذیری‌هایی که در محیط عملیاتی با آن روبرو است محافظت نمایند. در خصوص برنامه‌هایی که برای سیستم‌عامل اندروید نوشته می‌شوند ابزارهایی همچون ProGuard که به‌صورت رایگان در اختیار عموم است و نسخه به‌مراتب قوی‌تر و تجاری آن با عنوان DexGuard پیشنهاد می‌گردد. همچنین نسخه مربوط به iOS این محصول با عنوان iXGuard از طریق شرکت آشنا ایمن در ایران قابل تهیه است.

5 دیدگاه
  1. ناشناس می‌گوید

    به لحاظ فنی بسیار مطلب ضعیف و غیر فنی بوده که از راه پرداخت انتظار انتشار این مطالبی در این سطح نمیره!
    برای اثبات این قضیه چندین نکته رو میتونم اشاره کنم :
    ۱-بصورت کلی تمامی نرم افزارها آسیب پذیر میباشند و آسیب پذیری های امنیتی فقط مخصوص نرم افزارهای موبایلی نیستند. ولیکن به دلیل استفاده روز افزون از نرم افزارهای موبایلی میتوان آن رو حوزه ای جدید و قابل توجه در نظر گرفت. همچنین استفاده از این گونه عناوین، نه تنها به دارای بار فنی نبوده، بلکه استفاده از آنها صرفا در حوزه فروش برای ایجاد جذابیت کاذب سودمند می باشد.
    ۲- در خصوص سه روش عنوان شده برای معماری نرم افزارهای موبایلی، بسیار جذاب خواهد بود که دوستان نگارنده مطلب بتوانند مرجعی را در این خصوص معرفی نمایند. زیرا در خصوص روش ارسال اطلاعات با استفاده از SMS، بایستی عرض کنم این روش در خصوص نرم افزارهای موبایلی مبتنی بر تکنولوژی JAVA متداول بوده و شاید در نسل های اولیه نرم افزارهای Android، به مرور زمان و پیشرفت پلتفرم های موبایلی استفاده از این روش کم رنگ شده و اکنون روش استفاده برای ارسال اطلاعات بر روی برنامه های کاربردی موبایل های هوشمند، روش Web Bassed می باشد که این روش توسط شرکت های بین المللی نیز بصورت گسترده مورد استفاده قرار میگیرد.
    به هر حال به نظر میرسد که نگارنده مطلب با بهره جویی از یک فرهنگ لغات و کلمات لاتین قصد پوشاندن ضعف های فنی مقاله را داشته که خود این امر نیز باعث بوجود آمدن ضعف های فنی بیشتری گردیده است.
    در پایان این مقاله را به عنوان تبلیغاتی ضعیف در خصوص محصولات شرکت نه چندان خوشنام آشنا ایمن میتوان در نظر گرفت.

    1. رسول قربانی می‌گوید

      سلام
      ما در راه پرداخت خوشحال میشیم شما به عنوان یک کاربر متخصص نظرتون رو در قالب یک یادداشت بنویسید و برای ما ارسال کنید و ما با اسم و رسم خودتون منتشرش کنیم تا مخاطبان دانش کامل تری کسب کنند.
      در صورت تمایل راه ارتباط با ما در سایت موجود هست
      ارادت

    2. میلاد می‌گوید

      با سلام خدمت دوستان فرهیخته راه پرداخت،
      در خصوص اظهار نظر درج شده توسط جناب “ناشناس”، این نکته کاملا از سوی هر خواننده ای مشخص و مبرهن است که این کامنت با اهداف غیرفنی تهیه شده و نیت تخریبی نگارنده بویژه در دو خط پایانی تبلور دارد. از اینرو پاسخ به اینگونه اظهار نظرهای غیرحرفه‌ای، صرفا به دلیل احترام به مخاطبین فرهیخته راه پرداخت است.در این راستا و برای اجتناب از ایجاد سوء برداشت به دلیل کامنت درج شده توسط دیگر بازدیدکنندگان محترم موارد ذیل ذکر می گردد:
      1- مطلب تهیه شده حاصل گردآوری و ترجمه بنده از منابع و مقالات معتبر در این حوزه است که مقاله محوری آن توسط وبسایت تخصصی شرکت Guard Square به عنوان یکی از معتبرترین و معروفترین شرکت های حوزه امنیت اپلیکیشن های موبایل جهان و خالق محصول محبوب Proguard منتشر شده است. لینک مقاله:
      https://www.guardsquare.com/en/blog/protect-thin-client-applications
      این مطلب به عنوان یکی از پربازدیدترین مقاله ها در این سایت تخصصی می باشد که توسط CTO و بنیانگذار این شرکت (Eric Lafortune) که ایشان معرف حضور بسیاری از برنامه نویسان اندرویدی هستند منتشر شده است.
      2- در خصوص تقسیم بندی انواع Data Service های موبایلی نیز منظور ذات خود پلتفرم های موبایل است و سرویس های ارائه شده از طریق وب در دسته بندی دیگری می گنجد. مقاله زیر مطالعه شود:
      https://blog.masabi.com/blog/2007/08/10/thick-vs-thin-clients-in-mobile-today/

      3- در اینکه همه برنامه ها در هر پلتفرمی دارای آسیب پذیری هستند هیچ شکی نیست و خلاف این موضوع نیز در مطلب ذکر نشده است، ولی این مقاله به صورت تخصصی بر روی برنامه های موبایلی و علی الخصوص تین کلاینت اپ ها متمرکز است که به وفور در میان نرم افزارهای بانکی و پرداخت یافت می شوند. بنابراین عنوان باید با توجه به مطلب انتخاب شود که این اتفاق افتاده است.

      در پایان لازم می دانم که خوانندگان محترم را به مطالعه و بررسی روزمه فعالیتهای شرکت آشنا ایمن موجود در وبسایت این شرکت به آدرس https://www.ashnasecure.com دعوت نمایم، آشناایمن با سابقه انجام بیش از 300 پروژه امنیت اطلاعات در سازمان ها و مراکز حیاتی کشور طی 15 سال گذشته که اغلب منجر به دریافت رضایتنامه کتبی و تقدیرنامه از کارفرمایان محترم شده است، با درک ضرورت توجه به امنیت نرم افزارهای کاربردی موبایل فعالیتهای ویژه ای را شروع نموده است که آغاز این فعالیتها اخذ نمایندگی انحصاری شرکت Guard Squre می باشد.

  2. علی شیخی می‌گوید

    مرسی از مطلبتون، من از Proguard برای پروژه هایم استفاده می کنم و با اینکه رایگان است هیچ محدودیتی هم ندارد و تا به حال مشکلی هم باهاش نداشتم. آیا نسخه پولی آن دارای قابلیت خاصی است یا فقط جهت تهیه لایسنس مناسب است؟

    1. میلاد یداللهی می‌گوید

      با سلام، بله نسخه تجاری Proguard که با نام Dexguard شناخته میشود، دارای عملکرد و قابلیت های به مراتب بیشتر و قوی تری نسبت به نسخه رایگان است. مقاله زیر به این تفاوت ها می پردازد:
      https://www.ashnasecure.com/blog/post/127

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.