اخیراً بسیاری از کمپانیهای معروف مثل yahoo ،Snapchat ،Starbucks ،Target ،Home Depot و غیره با مشکل افشای اطلاعات کاربرانشان مواجه بودهاند. آیا میدانید چرا؟ به این دلیل که شخص حملهکننده به دلیل برخی مشکلات امنیتی در توسعه اپلیکیشن ها، موفق به پیدا کردن حفرههای امنیتی در این اپلیکیشن ها شد و از آن باگها استفاده کرد.
حقیقت این است که هیچکس به امنیت موبایل یا حریم خصوصی هنگام خرید قهوه از استارباکس یا هنگام بازی Angry Birds توجه نمیکند. حتی هنگامی که مشتریان به امنیت نیز فکر کنند، عقیده دارند که توسعهدهنده اپلیکیشن، به فکر ایجاد امنیت بوده است. اکثر مشتریان فکر میکنند که این اپلیکیشن ها در کمپانیهای معروفی ساخته شدهاند، بنابراین احتمال بروز خطا و نقص امنیتی وجود ندارد.
به همین دلیل است که کمپانیها و توسعهدهندگان در زمینه امنیت اپلیکیشن موبایل، به جای این که واکنش گرا باشند، باید کنش گرا عمل کنند. این موضوع مهم است که اگر میخواهید در رقابت نرمافزاری باقی بمانید، باید اعتماد مشتریان را بدست آورید.
در حالی که جنبههای زیادی برای بررسیهای امنیتی وجود دارند، ما در این مقاله به بررسی چند مورد از مشکلات امنیتی در توسعه اپلیکیشن های موبایل که باید به آنها اهمیت دهید، میپردازیم.
مشکلات امنیتی در توسعه اپلیکیشن های موبایل
1- ذخیرهسازی ناامن داده
در ایالاتمتحده، اپلیکیشن موبایل استارباکس یکی از پراستفادهترین اپلیکیشن های خرید است. مشتریان کافی است یک بار رمز عبور خود را وارد کنند تا بخش خرید این اپلیکیشن را فعال کنند و آن را بارها و بارها استفاده کنند و بدون هیچ محدودیتی برای ورود مجدد نام کاربری و رمز عبور، اقدام به خرید کنند.
این موضوع از جهت راحتی کار مشتریان بسیار درخور توجه است؛ اما حقیقت تلخ این است که در 16 ژانویه 2014 یعنی 26 دی ماه 1392، اپلیکیشن استارباکس، پراستفادهترین اپلیکیشن در آمریکا با 10 میلیون مشتری، اطلاعات ورود کاربران را به صورت متن آشکار[1] (بدون رمزنگاری) ذخیره میکرد. هنگامی که CNBC گزارش کرد که داده کاربران فاش شده است، 3 میلیون از مشتریان، این اپلیکیشن را از دستگاه موبایلشان پاک کردند. در 24 ساعت، این اپلیکیشن از 4امین اپلیکیشن برتر به 26 امین اپلیکیشن تنزل یافت. پس از آن استارباکس یک بهروزرسانی در آخر هفته ارائه کرد، اما نوشدارو پس از مرگ سهراب بود و بیفایده!
علاوه بر آن، این اطلاعات، مکان جغرافیایی کاربران را نیز نشان میداد. شخص غیرمجاز با استفاده از این اطلاعات میتوانست به وبسایت استارباکس نیز ورود کند. اغلب اوقات، افراد نام کاربری و رمز عبور یکسان برای حسابهای کاربری مختلف استفاده میکنند و به همین دلیل احتمال نفوذ به بقیه حسابهای کاربری نیز وجود دارد.
به عنوان یک توسعهدهنده، باید به فکر توسعه اپلیکیشنی باشید که اطلاعات حیاتی کاربران را مثل رمز عبور و شماره کارت اعتباری به صورت مستقیم در دستگاه نگه ندارد. اگر هم این اطلاعات ذخیره میشوند، باید به صورت امن ذخیره گردند. دادهها همیشه باید به صورت رمزنگاری شده ذخیره شوند و اپلیکیشن نباید اجازه پشتیبان گیری از این اطلاعات را بدهد.
2- مشکلات پروتکل امن (SSL)
تا به امروز یکی از رایجترین مشکلات امنیتی در توسعه اپلیکیشن ها که مشاهده کردهایم، مشکل در لایه اتصال امن (SSL) بوده است. اکثر اوقات توسعهدهندگان به اپلیکیشن های SSL نمیپردازند و به همین دلیل توسعه این اپلیکیشن ها همواره با مشکل مواجه بوده است. اغلب اوقات گواهینامههای SSL مورد تائید نیستند و در نماد اعتماد خود مشکل دارند. نبود حفاظت لایه انتقال مناسب سبب بروز آسیبپذیریهایی در اپلیکیشن میشود که میتواند اپلیکیشن شما را به سادگی تحت نفوذ حملات هکرها قرار دهد.
SSL (مخفف کلمه Secure Socket Layer) به معني «لايه اتصال امن» و پروتکلي (مجموعهای از قوانين) جهت برقراري ارتباطات ايمن ميان سرویسدهنده و سرویسگیرنده در اينترنت است که توسط شرکت Netscape ابداع شده است. پروتکل امنیتی (SSL) یکی از پروتکلهای استاندارد جهت انتقال دادهها بین سرویسدهنده (Server) و سرویسگیرنده (Client) به صورت رمزنگاری شده است.)
3- افشای داده
کمپانیها به دنبال دادههای خصوصی افراد هستند. با این کار میتوانند پیشنهادهای بازاریابی را بر اساس سلایق مشتریان شخصیسازی کنند؛ اما این موضوع بسیار حائز اهمیت است که جمعکردن دادههای خصوصی، به حریم خصوصی مصرفکننده نباید آسیب برساند.
برای نمونه، رسانهها در گزارشهای خود ادعا کردهاند که آژانس امنیت ملی آمریکا[2] (NSA)، اپلیکیشن های معروف موبایل را مثل Angry Birds مورد کنکاش قرار میداد تا دادههای خصوصی افراد مثل سن، موقعیت، جنسیت و غیره را جمعآوری کند. در حقیقت این اپلیکیشن، نوعی اپلیکیشن فاش کننده داده است.
تنها اپلیکیشن های مشتریان در خطر نیستند. یک اپلیکیشن سلامت را در نظر بگیرید که هر چند وقت یک بار، علائم بیماری را در بدن یک بیمار بررسی میکند. اگر اپلیکیشن دارای امکانات تحلیلی باشد که مشخص کند، یک قسمت از اپلیکیشن چند بار مشاهده شده است، هر کسی که به این امکانات تحلیلی دسترسی دارد میتواند وضعیت پزشکی یک کاربر خاص را مشخص کند – و این موضوع باعث میشود ارائهدهنده این اپلیکیشن ناقض قوانین HIPAA[3] شود.
(قانون انتقال و پاسخگویی الکترونيک بيمه سلامت HIPAA يا (Health insurance portability and accountability act) بهمنظور رفع مشکلات نظام بيمه سلامت آمريکا تصويب شد. با توجه به مشابهت مشکلات نظام بيمه درماني ايران و آمريکا، پژوهشگران بر آن شدند تا جهت حل معضلات نظام بيمه درماني ايران، به مطالعه HIPAA بپردازند و امکان پیادهسازی HIPAA در ايران را بررسي کنند.)
اپلیکیشن های زیادی را اسکن کردیم که از ارائهدهندگان و API[4]های تبلیغاتی سطح پایین استفاده میکنند. افشای دادهها یکی از رایجترین مشکلات امنیتی در توسعه اپلیکیشن های موبایل است و این موضوع که داده شما چگونه و به کجا ارسال میشود بسیار حائز اهمیت است، زیرا این اطلاعات برای هکرها بسیار مفید و مهم هستند.
4- ورودیهای نامطمئن
اپلیکیشن های موبایل، دادهها را از چندین منبع دریافت میکنند و نبود رمزنگاری مطمئن، به حملهکننده اجازه دسترسی به کوکیها و متغیرهای محلی را میدهد. اگر تصمیمات امنیتی مربوط به احراز هویت و مجوزدهی بر اساس مقادیر این ورودیها گرفته شوند، مهاجمین میتوانند مکانیزم های امنیتی را دور بزنند.
به عنوان مثال در سال میلادی 2012، یک نقص در اپلیکیشن اسکایپ باعث شد هکرها بتوانند با ارسال یک لینک ساده از طریق ایمیل، این اپلیکیشن را باز کنند و با هر شماره دلخواهی تماس بگیرند.
به طور مشابه باگی در سیستمعامل iPhone1 باعث شد که هکرها به گفتوگوهایی که از طریق شبکه بیسیم ناامن برقرار میشد، گوش دهند. هر اپلیکیشنی که امکان پذیرش دادهها از منابع خارجی را داشته باشد باید بررسیهایی برای تمام ورودیها داشته باشد.
این کار پیچیده است، اما چیزی نیست که به طور مداوم اتفاق بیفتد. به خاطر داشته باشید اپلیکیشنی که قابلیت استفاده راحتی دارد، در حقیقت اگر باعث به خطر انداختن اطلاعات شرکت یا مشتری شود، نکته مثبتی نخواهد داشت.
5- کنترل ضعیف سمت سرور
کسبوکارهایی که اولین اپلیکیشن های موبایلی خود را میسازند، اغلب سیستم را در معرض خطر قرار میدهند. این اپلیکیشن های ساخته شده در برابر حملهکنندگان قادر به دفاع کردن از اطلاعات کاربران نیستند.
حتی مشکل فراتر هم میرود، این نقطه، نقطه شروع بسیاری از مشکلات است – اکثر APIهای سمت سرور (back-end) این طور فرض میکنند که اپلیکیشن های موبایلی تنها چیزی هستند که به سرور دسترسی پیدا خواهند کرد. سرور باید معیارهای امنیتیای داشته باشد که از دسترسی بدون مجوز کاربران به دادهها، جلوگیری کند. این موضوع بسیار مهم است که سرویسهای سمت سرور در برابر حملات مخرب مقاوم باشند؛ به این معنی که تمام APIها باید مکانیزم های امنیتی مناسبی داشته باشند و تنها افراد دارای صلاحیت و دارای مجوز به آنها دسترسی داشته باشند.