چهارشنبه , ۲ خرداد ۱۳۹۷

امنیت برنامه‌های تلفن همراه ، بخش پايانی

 

1029

در دهه 1990، سیستم کلاینت/سرور طلایه‌دار صنعت ارتباطات بود. توان پردازش کامپیوترها و افزایش سرعت شبکه‌ها منجر به ظهور برنامه‌های کاربری زیادی شد که اغلب به میان‌افزار‌های برنامه‌نویسی و منابع داده شرکت‌ها متصل می‌شدند. اما این برنامه‌های کاربردی و کامپیوترهایی که برنامه‌ها در آن اجرا می‌شدند، در مقابل ویروس‌ها و سایر حملات آسیب‌پذیر بودند. وقتی طراحی برنامه‌های کاربردی ضعیف است، اطلاعات حساس در معرض خطر خواهند بود.
امروزه برنامه‌های کاربری تلفن‌همراه، طلایه‌دار بازار به‌شمار می‌روند. تلفیق توان پردازش تلفن‌های همراه مبتنی‌بر آندروئید و iOS و سایر سیستم‌عامل‌های تلفن‌همراه با سرعت شبکه‌های سلولی باند‌پهن، منجر به ظهور برنامه‌های کاربردی بیشتری برای تلفن‌های همراه با همان رویکرد قدیمی شده است: اتصال به میان‌افزار‌های مدیریت برنامه‌نویسی و منابع داده شرکتی. اما این برنامه‌های کاربردی و دستگاه‌هایی که این برنامه‌ها روی آن‌ها اجرا می‌شوند، مانند گذشته همواره در معرض خطر هستند. بله، درست حدس زدید: این دژاوویی است با یک تفاوت مهم! در حالی‌که بیش‌تر برنامه‌های کاربردی کلاینت/سرور در محدوده شبکه‌های محلی یا شبکه‌های گسترده شهری اجرا می‌شوند، برنامه‌های کاربردی تلفن‌ همراه مستقل از شبکه‌های شهری اجرا شده و از طریق اینترنت جهانی به سرویس‌ها دسترسی دارند. همین امر سبب شده‌ است به‌خصوص در مواردی‌که برنامه‌های کاربری به‌صورت صحیح و با تدابیر امنیتی و کنترل دسترسی طراحی نشوند‌، به‌طور بالقوه در معرض آسیب‌های امنیتی بزرگ قرار گیرند.

 

کلید قدرت
نیکلز می‌گوید: «برای برخی برنامه‌های موبایل، بدیهی‌تر است که قسمت‌های مختلفی از برنامه که کاربر به آن‌ها دسترسی دارد، بخش‌بندی شوند، زیرا در سیستم‌های Backend آن‌ها، نظارت بر‌دسترسی‌ها، پیاده‌سازی نشده ‌است. نظارت بر دسترسی روی بسیاری از برنامه‌کاربردی، بسیار ضعیف است، زیرا برنامه‌نویسان نمی‌خواهند برای برقراری ارتباط با بخش‌های مختلف کاربری، تلاش زیادی کنند. در اغلب موارد، شناسایی درخواست دریافت‌شده از یک برنامه‌کاربری مجاز، یک کلید برنامه‌نویس به‌شمار  می‌رود.
نیکلز می‌گوید: «یکی از چیزهایی که در بسیاری از برنامه‌نویسان دیده‌ام، این است که آن‌ها کلید‌های کاربری و کلید‌های برنامه‌نویسی دارند که به‌منظور تشخیص هویت از آن‌ها استفاده می‌کنند. در حالی‌که درخواست‌ها وارد می‌شوند، هیچ راهی نیست که مشخص شود کدام کاربر آن‌ها را ارسال کرده ‌است.»
کلید‌های برنامه‌نویس اغلب با سازمان‌دهی محدوده دسترسی برنامه‌‌های کاربردی خارجی به داده‌ها از طریق یک API عمومی، مورد استفاده قرار می‌گیرند. بویس می‌گوید: «اگر شما در حال راه‌اندازی یک برنامه‌ داخلی هستید، مدیریت این کلید‌ها کار سختی نخواهد بود، اما هنگاهی که می‌خواهید واسط را راه‌اندازی کرده و به سایر کاربران اجازه دسترسی به داده‌های خود را دهید، این امر حساس‌تر خواهد بود.» یک سرویس درگاه API، مشابه آن‌چه توسط Apigee ،Mashery و Layer 7 (یا لایه میان‌افزار‌ی مشابه) فراهم است، می‌تواند برای نظارت بر نحوه استفاده از کلید‌های خاص مورد استفاده قرار گیرد. چنین سرویسی، می‌تواند وضعیت دسترسی کاربران به کل مجموعه Backend را مدیریت کرده و آن‌ها را از دسترسی مستقیم، حفظ کند. بویس می‌گوید: «این سرویس‌ها بین دستگاه واسط و دنیای خارج قرار دارند.» وی از Marshery در دانشگاه بهره گرفته بود. بویس می‌افزاید که لایه پروکسی می‌تواند برخی مراتب امنیتی را نیز فراهم کند. این مطلب به‌خصوص در‌مورد حملات denial of service مشهود است. اما در عین حال، از حیث یک کلید برنامه‌نویس هم قابل توجه است. چنین کلیدی می‌تواند برای به تصویر کشیدن آن‌چه برنامه‌های موبایل با APIها  انجام می‌دهند، به‌کار رود. همچنین کلید‌ها می‌توانند در صورت نیاز نداشتن به آن‌ها، بسته شوند.
سرویس‌های درگاه API برای کاربرد در برنامه‌های‌کاربری با ابعاد کوچک، مقرون به‌صرفه نیستند. با‌وجود این، جی-شوان، مدیر عامل و بنیان‌گذار Solstice Mobile  می‌گوید: «شما می‌توانید همچنان الگوی یک درگاه API را با استفاده از میان‌افزار موجود، دنبال کنید. به‌این ترتیب، ایجاد یک API با استفاده از مجموعه‌ای از سرویس‌های پروکسی در مرکز داده‌ها در DMZ آن‌ها امکان‌پذیر است. سپس شما می‌توانید همه پردازش‌های مربوط به برنامه‌کاربری خود را از طریق این پروکسی‌ها اجرا کنید تا قادر به مشاهده اطلاعات ارسالی و دریافتی توسط برنامه‌ شوید.»
کویکندال همچنان روی مزایای سرویس‌های درگاه واسط، حساب نمی‌کند. او می‌گوید: «به‌کارگیری این سرویس، به‌معنای ممنوع کردن ارسال و دریافت ترافیک Backend نیست. در واقع وظیفه یک درگاه API، این است که به شما تذکر دهد باید نسبت به انتقال ترافیک داده‌ها، دقیق‌تر شوید، نه‌این‌که ترافیک داده‌های مجاز را نیز ممنوع کنید. بنابراین، در اینجا نیز با حفره‌های امنیتی مواجه هستیم. برخی حملات ممکن است از طریق روش‌های فرار از دیوار‌آتشین از برنامه‌های کاربری تحت وب، صورت گیرد.»
اگر مهاجم بتواند کلید برنامه‌نویس را بازیابی کند، قادر خواهد بود تا زمانی‌که کاربر متوجه فعالیتش نشده‌ است، به دروازه‌های API لغزنده پیشین دسترسی پیدا کند. نیکلز می‌گوید:«کلید‌های برنامه‌نویس API اغلب به‌راحتی قابل استخراج هستند. این کلید‌ها در قالب کد برنامه‌ هستند. شما می‌توانید به‌سادگی به این کد دست یابید. در برنامه‌های کاربری تحت وب تلفن‌های همراه، کلید اغلب در قالب یک کد مرورگر خواهد بود.»
به‌همین دلیل است که رمزنگاری داده‌های ذخیره‌شده در دستگاه، نظیر کلید‌های برنامه‌نویس، از اهمیت ویژه‌ای برخوردار است. شوآن می‌گوید: «شما می‌توانید هر داده حساس و محرمانه‌ای را روی تلفن‌همراه خود، رمزنگاری کند. مجموعه‌های نرم‌افزار برنامه‌نویسی زیادی برای این منظور وجود دارد. به‌همین علت است که داشتن برنامه‌های طرف سوم (Third-party)  به‌منظور محافظت از امنیت برنامه‌های کاربری شما، بسیار  مهم است.»
اما کلید‌ها، به‌جز شکستن کد برنامه‌، راه‌های دیگری برای ورود به دستگاه دارند. نیکلز می‌گوید: «هنگامی‌که یک برنامه‌نویس در حال کار روی برنامه‌ای است، می‌تواند به‌راحتی با‌استفاده از کلید‌های برنامه‌نویس به همه‌جا وارد شود. این کابوس همواره در مدیریت کلید وجود دارد.»
برای برنامه‌های کاربری یک تشکیلات مهم، یک درگاه API کافی نخواهد بود. در‌واقع لازم است کاربران به محتوای سرورها در آن‌سوی دیوار‌آتشین دسترسی پیدا کنند که البته، این کار از طریق  API تحت وب، به‌سادگی صورت نمی‌گیرد. اما راه‌های معمولی اتصال به یک شبکه، نظیر VPNها، برای برنامه‌های موبایلی که روی دستگاه‌ کارمندان یا مشترکان اجرا می‌شوند، الزامی نیستند، زیرا این یک انتخاب همه یا هیچ خواهد بود. داده‌های مربوط به همه برنامه‌های ‌موبایل، بدون در نظر گرفتن این‌که آیا به سیستم مدیریت ارتباط با مشتری یک شرکت دسترسی دارند یا دانلود یک به‌روزرسانی برای بازی Angry Birds، از VPN به‌عنوان مسیر انتقال استفاده می‌کنند.
شوآن می‌گوید Solstice درگذشته از نسخه بتای یک سرویس جدید از Good Technology استفاده می‌کرد که آن را Good Dynamic می‌نامند تا به حل این مسئله، کمک کند.  Good Dynamicها به شرکت‌های بزرگ اقتصادی اجازه می‌دهند که یک برنامه‌موبایل سازمانی را  به اصطلاح کانتینر‌بندی کنند و سپس نظارت‌های مربوط به خط مشی شرکت، حتی روی دستگاه شخصی یک مشترک، پیاده‌سازی شود. این نظارت‌ها شامل حذف از راه دور و قفل کردن داده‌های برنامه است. این سرویس همچنین یک مسیر امن فراهم می‌کند تا برنامه‌های‌ تلفن‌همراه بتوانند برای اتصال به شبکه شرکت، از طریق دروازه Good مورد استفاده قرار گیرند. شوآن می‌گوید: «این سرویس شبیه مدل Blackberry است، بنابراین، با فیلترینگ ترافیک از طریق محدوده امن مرکزی مواجه هستیم. اکنون من می‌توانم بدون اتصال به VPN به پایگاه داده خود دسترسی پیدا کنم.»
قفل‌ها را بررسی کنید
نیکلز معتقد است سرویس‌های امنیتی و تشخیص هویت، بخش جدایی‌ناپذیر سیستم‌های به‌کاررفته در برنامه‌های کاربری تلفن‌همراه، در Backend آن‌ها هستند. او می‌گوید: «اگر شما امکان کنترل دسترسی Backend  را ندارید باید آن‌را طراحی و به برنامه اضافه کنید که البته این کار همواره با خطر همراه است.» شما از فراهم کننده Backend، انتظار ایجاد چنین سرویس امنیتی را دارید. در حالی که هر کجا لازم است کدی نوشته‌ شود، یک خطر ذاتی وجود خواهد داشت. این خطر، فقط ناشی از وجود حفره‌های امنیتی موجود در کد‌هایی که توسط برنامه‌نویسان به منظور پشتیبانی از بخش Backend می‌نویسند (نظیر آن‌چه در SkyTech مشاهده شد) نیست. بلکه خطراتی از سوی منابع امنیتی که همراه پلتفرم‌های اصلی، که به‌منظور توسعه پلتفرم API به‌کار گرفته می‌شوند، وجود دارد. از جمله این پلتفرم‌ها می‌توان به پایگاه‌داده، ماجول‌های نرم‌افزاری پلتفرم اصلی سرویس‌ها نظیر Ruby و PHP اشاره کرد.
نیکلز این وضعیت را مسابقه تسلیحاتی می‌نامد. او معتقد است «پلتفرم به‌عنوان سرویس» اشکالاتی دارد زیرا شما از سوی شبکه، به منابع موجود در بخش مدیریت برنامه‌نویسی دسترسی دارید و باید در هنگام ذخیره داده‌ها، بارگذاری هر دسته داده را مدیریت کنید و با استفاده از ابزارهایی مانند PHP، می‌توانید به‌طور مستمر، برخی رفتار‌ها را شناسایی کنید. برای این منظور باید اطمینان داشته ‌باشید که از جدیدترین نسخه PHP استفاده می‌کنید. پایگاه‌های داده نیز رخنه‌های امنیتی دارند که برای رسیدن به موفقیت، باید همواره مراقب این رخنه‌ها بود.
به همین علت است که شوآن، می‌گوید که شرکت او، به کمک افرادی خارج از شرکت، روی حفظ امنیت برنامه‌های موبایل، کار می‌کند. او می‌گوید: «در سمت کلاینت، ما با چند هکر در ارتباط هستیم. بعد از این‌که برنامه را طراحی و آماده کردیم، هکرهای کلاه سفید، به کد‌های ما سر می‌زنند. من معتقدم برای برنامه‌های تلفن‌همراه، بررسی اضافه و ایجاد تعادل، از اهمیت زیادی برخوردار است.»
این همیاری، فراتر از چند گروه کوچک برنامه‌نویسی است و ممکن است با مجموعه خطرهای برنامه‌ خودشان، هماهنگی نداشته ‌باشد. اما با وجود مردمی که به‌دنبال راه نفوذ به بخش Backend برنامه‌های موبایل هستند تا به منافع خود برسند، در کمترین سطح نیاز به رمزنگاری احساس می‌شود. نیکلز می‌گوید: «اطلاعات بسیار حساس که روی دستگاه ذخیره می‌شوند، باید رمزنگاری شوند. همچنین انتقال داده‌ها باید از طریق کابل‌های رمزنگاری‌شده صورت گیرد، به‌این‌ترتیب، در بدترین حالت، اگر شخصی بتواند وارد سیستم شود، به هیچ چیز باارزشی دست پیدا نخواهد کرد.

منبع : ماهنامه شبکه

Print Friendly, PDF & Email

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*