اقبال مردم به استفاده از خدمات آنلاین – به ویژه خدمات مالی- روز به روز در حال افزایش است و مسائل مرتبط با شیوع و پاندمی کرونا، این اقبال را چندین برابر کرده است. برای درک بهتر این واقعیت کافی است توجه داشته باشید که در سه ماهه سوم سال 2020، بیش از 1.6 میلیارد دلار تراکنش مالی بر بستر اپلیکیشنهای موبایلی انجام شده است که در قیاس به سه ماهه دوم همین سال، نزدیک به 30% رشد را نشان می دهد. این تراکنشها از درگاههای مختلفی مانند اپلیکیشنهای بانکی و یا صنعت پرداخت، رمزارزها و اپلیکیشنهای بورسی انجام شده است. این مهاجرت سریع از درگاههای سنتی به درگاههای موبایلی، سبب شده است بسیاری از این اپلیکیشنها با عجله و بدون رعایت پیش نیازهای امنیتی تولید و عرضه شوند. در چنین شرتیطی به نظر می رسد علیرغم اهمیت این حوزه از منظر امنیت اطلاعات، امنیت اپلیکیشن های بانکی و پرداخت جدی گرفته نمی شود.
در چنین شرایطی، این اپلیکیشنها بیش از هر زمان دیگری در معرض حملات سایبری قرار دارند. از سوی دیگر باورهای غلط از سوی برنامه نویسان اپلیکیشنهای موبایل در خصوص امن بودن پلتفرم های موبایلی موجب خطرناک تر شدن آسیب پذیری های موبایلی شده است که مهمترین آنها توسط OWASP فهرست گردیده اند. این موضوع در اپلیکیشنهای صنعت پرداخت به دلیل نگهداری و پردازش اطلاعات شخصی و مالی افراد، هم حائز اهمیت بالایی است و هم از طرف دیگر جذابیتهای زیادی برای نفوذگران دارد.
برخلاف تصور غالب متولیان امنیت در سازمانها، امنیت را باید از ابتدای طراحی و توسعه یک اپلیکیشن مورد توجه قرار داد و نمی توان به صرف انجام ارزیابی های امنیتی دوره ای (که عموماً بعد از فاز توسعه و طراحی انجام می شود)، ادعای داشتن اپلیکیشنی امن را داشت. با طراحی و پیاده سازی لایه های مختلف امنیتی، می توان به سطح بالاتری از امنیت دست یافت و بدون شک، انجام ارزیابی های امنیتی نیز یکی از همین فعالیتها جهت حصول اطمینان از پیاده سازی صحیح این لایه های امنیتی است.
در این مقاله به بررسی سه دغدغه عمده در حوزه امنیت اپلیکیشنهای پرداخت موبایلی پرداخته شده است و ضمن معرفی مختصر آنها، راهکارهایی نیز برای مقاوم سازی اپلیکیشن در برابر این حملات پیشنهاد شده است.
تفکیک تروجان ها از بدافزارها می تواند به درک بهتر چگونگی عملکرد آنها کمک کند. بر اساس گزارش Check Point در اواسط سال 2020 تروجانهای بانکی شناسایی شده به شدن افزایش یافته و در برخی موارد تبعات مالی آنها تا دو برابر افزایش را نشان می دهد. این تروجانها غالباً بصورت کدهای مخربی هستند که در یک اپلیکیشن دیگر قرار داده می شوند و اطلاعات مالی کاربر را از اپلیکیشن پرداختی و بانکی وی، سرقت می کنند. نمونه بارز این تروجانها را می توان در بازیهای موبایلی دید. هنگامی که کاربر یک برنامه بانکی قانونی (نسخه اصلی) را اجرا می کند، تروجانی که قبلاً دانلود و نصب شده است، فعال می شود. این تروجان یک صفحه مشابه صفحه اصلی ایجاد کرده و کاربر را تشویق می کند که اطلاعات کاربری و مالی خود را در آن وارد کند. به این ترتیب کاربر اطلاعات خود را در اختیار نفوذگر قرار می دهد و پس از آن دوباره به صفحه اصلی اپلیکیشن بانکی، برخواهد گشت. لذا کاربر هیچ احساسی از اینکه تحت نفوذ قرار گرفته است و اطلاعات وی در اختیار نفوذگران قرار دارد، نخواهد داشت.
تروجانها همچنین ممکن است از طریق پرداختهای درون برنامه ای عمل کنند و در حین انجام عملیات پرداخت درون برنامه ای، اطلاعات کاربران را به سرقت برند.
از سوی دیگر نفوذگران با استفاده از ابزارهای تحلیل پویای (Dynamic Analysis) اپلیکیشنهای موبایلی، می توانند کدهای مخرب را در زمان اجرای برنامه اجرا کرده و به این ترتیب با تغییر APIها و یا سرقت اطلاعات، به اطلاعات با ارزش کاربران دسترسی یافته و از آن سوء استفاده کنند.
بنابراین چنانچه یک اپلیکیشن مالی در معرض چنین تهدیداتی باشد، می تواند تحت شکایت قضایی و جریمه های سنگین قرار گیرد؛ مضاف بر اینکه اعتبار وی نیز مخدوش خواهد شد که به مراتب حائز اهمیت بیشتری است.
این موضوع اهمیت و ضرورت توجه به مقاوم سازی اپلیکیشنهای مالی در برابر آسیب پذیری های پویا را نشان می دهد. خودمقاومتی در برابر تهدیدات زمان اجرا (Runtime Application Self-Protection (RASP)) می تواند با تشخیص محیط اجرای برنامه (محیط روت شده، شبیه سازها و ...) از اپلیکیشنها در برابر این نوع تهدیدات محافظت نماید.
گونه دیگری از آسیب پذیری های رایج که در حال رشد هستند، اپلیکیشنهای جعلی هستند که با تغییر در برنامه های اصلی و یا با ظاهری مشابه با اپلیکیشنهای اصلی در مارکتهای مختلف عرضه می شوند.
نفوذگران با سوء استفاده از این اپلیکیشنها، کاربر را وادار به وارد کردن اطلاعات حساب کاربری خود در محیط برنامه جعلی می کنند. سپس با نمایش یک پیغام خطای جعلی، از کاربر می خواهند که اطلاعات حساب کاربری خود را بازیابی نماید و در این هنگام با دسترسی غیرمجاز به پیامکهای دریافتی، کد امنیتی را دریافت کرده و مراحل بعدی را برنامه ریزی می کنند. به این ترتیب کاربر در دام نفوذگران افتاده و علاوه بر مشخصات حساب کاربری خود، کد امنیتی را نیز جهت تغییر در مشخصات حساب کاربری در اختیار سودجویان قرار داده است.
این موضوع با شناسایی بیش از 65 هزار اپلیکیشن پرداختی جعلی بر روی مارکتهای اصلی و جهش تراکنشهای تقلبی در سال 2018، بصورت هشدار توسط FBI مطرح شد. نفوذگران با استفاده از این اپلیکیشنها اطلاعات حساب کاربری مشتریان را سرقت کرده و در فرصت مناسب از آنها سوء استفاده می کنند. FBI برای پیشگیری از سرقت اطلاعات کاربران، به آنها توصیه کرده است که اولاً اپلیکیشنهای خود را از منابع موثق (مارکتهای قابل اعتماد و یا وب سایت رسمی ارائه دهنده خدمت) دانلود نمایند و ثانیاً ضمن استفاده از کلمات عبور پیچیده، قابلیت احراز هویت دوعاملی (2 Factor Authentication) را نیز برای خود فعال نمایند.
توسعه دهندگان اپلیکیشنها می توانند با استفاده از روشهای مختلف و ابزارهای حرفه ای، از این سوء استفاده ها پیشگیری کنند. این کار با استفاده از روشهای مبهم سازی (Obfuscation)، رمز گذاری داده ها (Encryption) و پیش بینی روشهایی جهت پیشگیری از تغییر در متن برنامه (Anti-Tampering)، امکان پذیر خواهد بود. با استفاده از این روشها، عملاً لایه های مختلف امنیتی در محافظت از اپلیکیشن به کار گرفته می شود و به این ترتیب بازیابی متن برنامه (که کد منبع را در دسترس نفوذگر قرار می دهد) و همچنین تغییر آن در زمان اجرا، غیر ممکن خواهد شد.
باید به این نکته توجه داشت که برای رسیدن به این منظور، صرفاً تغییر نام (Name Obfuscation) در متن برنامه کفایت نمی کند و لازم است که موارد دیگری همچون مبهم سازی جریان کار (Work Flow Obfuscation)، محاسبات ریاضی (Arithmetic Obfuscation) و مبهم سازی کتابخانه ها و توابع نیز مورد توجه قرار گیرد. بهره گیری حداکثری از این قابلیتها، می تواند برگرداندن متن برنامه توسط ابزارهای متداول مهندسی معکوس اپلیکیشنها را تا حد امکان دشوار نماید.
یکی دیگر از آسیب پذیری های مهم در اپلکیشنهای پرداخت، امکان نشت اطلاعات کاربران (اطلاعات حساب کاربری، مانده حساب، فهرست تراکنشها و ...) است که می تواند در کنار جرایم سنگین مالی، تأثیرات مخربی بر اعتبار بانک یا مؤسسه مالی داشته باشد.
بررسی های اخیر نشان می دهد که بیش از نیمی از 14 اپلیکیشن مالی بررسی شده، دارای آسیب پذیری های امنیتی هستند و 43% از آنها اطلاعات حساس کاربران را بصورت متن واضح (Clear Text) ذخیره می کنند. همچنین امکان گرفتن دسترسی بر روی اطلاعات بدون داشتن دسترسی فیزیکی به تلفن همراه کاربر در 76% از آسیب پذیری های شناسایی شده وجود داشته است و برای سوء استفاده از یک سوم از این آسیب پذیری ها، نیازی به دسترسی سطح بالا (دسترسی در سطح ادمین) نبوده است. نکته جالبتر آن است که از بین آسیب پذیری های شناسایی شده در اپلیکیشنهای پرداختی اندرویدی، 29% از آسیب پذیری های شناسایی شده دارای درجه اهمیت بالا (High Risk) بوده اند؛ در حالیکه در اپلیکیشنهای iOS، حداکثر سطح آسیب پذیری شناسایی شده، دارای اهمیت متوسط (Medium Risk) بوده است.
این موضوع نشان می دهد که چرا یک مؤسسه مالی باید به حفظ اطلاعات حیاتی کاربران خود اهمیت بدهد و انطباق با الزامات امنیتی استانداردهایی مانند PCI-DSS, GLBA, PSD 2 تا چه میزان حیاتی است. هرگونه اطلاعات حساب کاربری، رمزهای عبور، اطلاعات کارت، اطلاعات تراکنشها، آدرسها و لینکهای مالی (API) و کلاسهای مهم برنامه باید بصورت مناسب رمزنگازی شود. این رمزنگاری می تواند با مبهم سازی متن برنامه، نامها، توابع، روابط محاسباتی و فرآیند برنامه تقویت شود.
در کنار این مکانیزمهای امن سازی، روشهای محافظت در برابر حملات زمان اجرا (Runtime Application Self-Protection: RASP) نیز می تواند از سرقت اطلاعات در زمان اجرای برنامه و انجام تراکنشهای مالی جلوگیری نموده و با پیشگیری از تغییر در برنامه، از یکپارچگی کد اطمینان حاصل نماید. بعنوان مثال در زمان تشخیص یک فعالیت مشکوک و غیر عادی، می توان اجرای برنامه را متوقف و پیغام هشدار مناسب را برای کاربر و یا راهبر سرویس نمایش داد.
تمامی این راهکارهای امن سازی برای صاحبان اپلیکیشنها فضایی همراه با اطمینان خاطر ایجاد خواهد کرد که امنیت اپلیکیشن آنها در بالاترین سطح تضمین شده است.
اینکه بخش عمده اپلیکیشنهای صنعت پرداخت دارای آسیب پذیری های متعدد هستند، لزوم توجه به امنیت آنها را بعنوان یک اولویت، نشان می دهد. بعنوان نمونه نزدیک به 40% از کاربران آمریکایی بدلیل نگرانی از امنیت اپلیکیشنهای پرداختی، از این اپلیکیشنها استفاده نمی کنند. از همین رو در کنار استانداردهای مختلفی که برای ارتقای امنیت اپلیکیشنهای مالی تدوین شده است (مانند الزامات PCI)، نهادهای حاکمیتی مالی در کشورهای مختلف نیز الزاماتی را در این زمینه تدوین و برای پیاده سازی ابلاغ کرده اند. از آن جمله می توان به الزامات نهاد BDDK در ترکیه و الزامات PDPA در سنگاپور اشاره کرد.
لذا لازم است توسعه دهندگان اپلیکیشنهای مالی توجه ویژه ای را به مفهوم و مقوله امنیت معطوف دارند. این موضوع نه تنها می تواند اعتبار مؤسسات مالی را بالا برد، بلکه می تواند بعنوان یک مزیت رقابتی در نظر گرفته شود.
علیرغم تأکید مکرر استانداردهای امنیتی، متأسفانه یک مطالعه موردی نشان داده است که 82% از تیمهای توسعه اپلیکیشن اطلاعات جامعی از الزامات امنیتی و نحوه پیاده سازی آنها ندارند.
استفاده از ابزارها و راهکارهای امن سازی الزاماً نیازمند صرف زمان و زحمات بیشتری برای تیم توسعه نیست و این کار می تواند با استفاده از تجربیات موفق (Best Practice) به شکلی ساده و قاعده مند، انجام شود. ابزارهای iXGuard برای iOS و DexGuard برای اندروید (تولید شرکت Guardsquare) تمامی این قابلیتها را در اختیار تیمهای توسعه قرار می دهد تا اپلیکیشن خود را در برابر حملات ایستا و پویا محافظت نمایند. لذا با پیاده سازی لایه های مختلف امنیتی برای یک اپلیکیشن، کار نفوذگران برای سوء استفاده از آن بسیار دشوار خواهد شد.
در کنار تیمهای توسعه اپلیکیشن که وظیفه اصلی تأمین امنیت را برعهده دارند، تیمهای امنیت نیز می توانند با انجام تستهای نفوذپذیری و دقت در بررسی الزامات امنیتی، سطح امنیت در اپلیکیشنها را تا حد امکان بالا ببرند.
باید توجه داشت که ارتقای امنیت یک اپلیکیشن، یک فرآیند مداوم و همراه با تکرار است. لذا باید تیمهای توسعه و امنیت، در کنار یکدیگر این مراحل را عملیاتی کنند. این به مفهوم نیاز به پیاده سازی کامل Secure Software Development Life Cycle (SSDLC) است که باید در توسعه اپلیکیشنهای پرداختی، نهادینه شود.
بصورت کلی مهمترین راهکارهای امن سازی اپلیکیشنها را می توان به شرح زیر در نظر گرفت:
این گروه از آسیب پذیری ها نیاز به نصب برنامه ندارند و عمدتاً بر مهندسی معکوس اپلیکشن و استخراج اطلاعات حیاتی از آن متمرکز هستند. برای امن سازی اپلیکیشن در برابر این آسیب پذیری ها، باید مجموعه ای از راهکارهای مبهم سازی و رمزنگاری پیاده سازی شوند که خود شامل روشهای مختلفی هستند که مهمترین آنها عبارتند از:
از معتبرترین و جامعترین ابزارهای امن سازی اپلیکیشنهای موبایلی، می توان به iXGuard و DexGuard از محصولات شرکت Guardsquare اشاره کرد که طیف وسیعی از قابلیتهای امن سازی (از جمله موارد فوق) را برای اپلیکیشنها در اختیار تیمهای توسعه قرار می دهند. همچنین در انتهای فرآیند امن سازی گزارشی از امن سازی های انجام شده و همچنین پیشنهاداتی برای امن سازی بیشتر را به کاربر ارائه می دهند.
این گزارش شامل سه بخش اصلی است که عبارتند از:
این ارزیابی نشان می دهد که اپلیکیشن تا چه حد در برابر آسیب پذیری های شناخته شده، امن سازی شده است و از کدام قابلیتهای ارائه شده در این ابزارها، استفاده شده است. در نهایت نیز یک امتیاز کلی بابت سطح امن سازی انجام شده برای اپلیکیشن در 5 حوزه زیر، به اپلیکیشن تخصیص داده می شود:
بعد از ارزیابی سطح مخاطرات اپلیکیشن، این گزارش مجموعه ای از قابلیتهای امن سازی دیگری که می توان از آنها بهر گرفته و سطح امنیت اپلیکیشن را بالاتر برد، به کاربر پیشنهاد می کند.
در انتهای گزارش امن سازی و بر اساس تنظیمات انجام شده در فایل پیکربندی، پیشنهاداتی به کاربر ارائه خواهد شد. این پیشنهادات به کاربر کمک می کند که ضمن بهینه سازی تنظیمات انجام شده، به سطح بالاتری از امنیت دسترسی یابد.
بدون شک ارتقای امنیت در اپلیکیشنهای موبایلی نیازمند ارتقای دانش امنیت در تیمهای توسعه و همکاری مستمر آنها با تیمهای امنیت است. ارتقای سطح دانش عمومی کاربران نیز می تواند به این موضوع کمک شایانی کند.
برای مطالعه مقالات بیشتر در حوزه امنیت اپلیکیشنهای موبایلی، به وبلاگ آشنا ایمن مراجعه کنید.