اشتباهات توسعهدهندگان برنامههای موبایل، اعتماد کورکورانه به امنیت ابری
اشتباهات توسعهدهندگان برنامههای موبایل، اعتماد کورکورانه به امنیت ابر
توسعهدهندگان برنامههای موبایل نقشی حیاتی در زندگی روزمره ما ایفا میکنند. از مسیریابی و ارتباطات گرفته تا کار، سرگرمی و خرید، همه چیز مدیون تلاش آنهاست. اما این مسئولیت بزرگ، تعهدی منحصربهفرد نیز برای محافظت از دادههای کاربران به همراه دارد. متأسفانه بسیاری از توسعهدهندگان، چه عمداً و چه سهواً، در پیادهسازی کنترلها و فرآیندهای کلیدی امنیتی برای حفظ حریم خصوصی کاربران کوتاهی میکنند. در این مقاله، اولین و رایجترین اشتباه توسعهدهندگان را بررسی میکنیم: عدم محافظت از دادههای کاربر در برابر دسترسی غیرمجاز در فضای ابری. سیمانتک با ارائه راهکارهایی مانند Mobile Threat Defense و Cloud Workload Protect، به کسبوکارها کمک میکند تا این شکافهای امنیتی را ببندند.
اعتماد کورکورانه؛ نقطه شروع فاجعه امنیتی
توسعهدهندگان اغلب تصور میکنند که تیم DevOps، واحد فناوری اطلاعات یا ارائهدهنده خدمات ابری، بدون نیاز به کنترلهای امنیتی اضافی، از دادههای خصوصی و حساس کاربران محافظت میکند. این باور نادرست، «اعتماد کورکورانه» نام دارد و یکی از بزرگترین تهدیدهای امنیتی در برنامههای موبایل است. واقعیت این است که برنامهها معمولاً با یک یا چند سرویس ابری ارتباط برقرار میکنند و مهاجمان دقیقاً همین نقطه را هدف قرار میدهند. کنترل دسترسی به دادههای ابری نقشی حیاتی دارد و توسعهدهندگان باید دانش کافی برای استفاده از آن داشته باشند، اما متأسفانه بسیاری از آنها به اشتباه فرض میکنند که ارائهدهنده ابری همه چیز را انجام داده است. گاهی اوقات هیچ کنترل دسترسی در برنامه وجود ندارد و تمام دادههای خصوصی کاربران در معرض دید عموم قرار میگیرد. در موارد دیگر، کلیدهای خصوصی به راحتی درون باینری برنامه پیدا میشوند یا به صورت سختکد شده درج میگردند. این کلیدها، دروازه ورود به قلمرو سازمانی را باز میکنند و دادههای حساس را در معرض خطر افشا قرار میدهند.
دامنه گسترده مشکل: آمارهای هشداردهنده از سه ارائهدهنده بزرگ ابری
تیم امنیت سیستمعاملهای مدرن سیمانتک تحقیقات گستردهای روی بزرگترین ارائهدهندگان خدمات ابری مورد استفاده برنامههای موبایل انجام داده است. نتایج این تحقیق نشان میدهد که بسیاری از برنامههای سازمانی که از این ارائهدهندگان استفاده میکنند، کنترل دسترسی ضعیفی به دادههای ابری دارند. در مورد مایکروسافت آزور، از میان میلیونها برنامه تحلیلشده، ۸۲۲۵ برنامه موبایل که به بیش از ۲۵۰۰۰ حساب آزور متصل بودند، شناسایی شد. از این میان، ۴۶۰ برنامه موبایل اندروید و iOS که تنها بیش از ۱/۱ میلیارد بار نصب شده بودند، فایلهایی را از ۲۲۳ حساب ناامن سرویس Azure Blob نشت میدادند. بیش از ۲۰۰ میلیون رکورد پایگاه داده افشا شده بود که شامل اطلاعات بهداشتی محافظتشده مانند نام بیماران، علائم بیماری و سوابق پزشکی و همچنین اسناد شرکتی از جمله قراردادها، فاکتورها و دادههای ردیابی موجودی میشد. برای پلتفرم گوگل، حدود ۳۰۰۰ برنامه موبایل اندروید و iOS که تنها برای اندروید بیش از ۶۲۰ میلیون بار دانلود شده بودند، از ۲۳۰۰ پایگاه داده ناامن نشت داده داشتند. بیش از ۱۰۰ میلیون رکورد شامل ۲/۶ میلیون رمز عبور و شناسه کاربری به صورت متن ساده، بیش از ۴ میلیون رکورد اطلاعات بهداشتی و ۵۰ هزار رکورد مالی شامل جزئیات تراکنشهای بانکی و رمزهای ارزهای دیجیتال افشا شده بود. در آمازون وب سرویس نیز هزاران برنامه در حال افشای اعتبارنامههای S3 بودند. در تقریباً نیمی از موارد، تیم سیمانتک توانست بدون نیاز به نام کاربری یا رمز عبور، به تمام سطلهای داده S3 دسترسی پیدا کند.
تأثیرات مخرب: از باجافزار تا جریمههای سنگین نظارتی
عدم پیادهسازی کنترل دسترسی به دادههای ابری میتواند عواقب مالی و اعتباری سنگینی برای توسعهدهندگان برنامه به همراه داشته باشد. ربوده شدن داده توسط مهاجمان میتواند منجر به حملات باجافزاری، کاهش اعتماد کاربران به برنامه و جریمههای سنگین نظارتی شود. با اجرایی شدن مقررات عمومی حفاظت از داده اتحادیه اروپا، اخیراً خطوط هوایی بریتیش ایرویز اخطاریهای دریافت کرده که در آن پیشنهاد جریمه ۲۲۸ میلیون دلاری برای نقض دادههای حدود ۵۰۰ هزار مشتری مطرح شده است. همچنین هتلهای زنجیرهای ماریوت نیز با اخطار جریمه ۱۲۴ میلیون دلاری برای افشای اطلاعات ۳۳۹ میلیون مهمان مواجه شده است. این ارقام نشان میدهد که هزینه غفلت از امنیت دادههای ابری چقدر میتواند گزاف باشد. توسعهدهندگانی که تصور میکنند ارائهدهنده ابری تمام مسئولیت را بر عهده دارد، باید بدانند که در نهایت خودشان و سازمانهایشان پاسخگوی نقض دادهها خواهند بود.
مطالعه موردی اول: اپلیکیشن Digicard مایکروسافت
برنامه Digicard برای iOS توسط تیم آفیس مایکروسافت توسعه یافته و کسبوکارها از آن برای ذخیره، سازماندهی و به اشتراکگذاری دادههای کاری در قالبهای رایج مانند ارائههای پاورپوینت، اسناد ورد یا فایلهای متنی حاوی رمزهای عبور استفاده میکنند. این برنامه از Azure Blob استفاده میکند. اگر شما توسعهدهنده این برنامه بودید، چگونه کنترل دسترسی مناسب را برای محافظت از دادههای کاربران پیادهسازی میکردید؟ مایکروسافت گزینههای مختلفی برای مجوزدهی به منابع ارائه میدهد: کلید اشتراکی، امضای دسترسی مشترک، اکتیو دایرکتوری آزور و دسترسی عمومی ناشناس. دادههای کاربر باید فقط در دسترس خود کاربر باشد، مثلاً با استفاده از کنترل دسترسی مبتنی بر نقش که توسط اکتیو دایرکتوری آزور ارائه میشود. داده نباید در دسترس عموم قرار گیرد و نه در دسترس سایر کاربران. اما آنچه در Digicard و هزاران برنامه دیگر یافت شد، سختکد کردن کلید اشتراکی درون برنامه بود که تمام دادههای کاربر را در معرض عموم قرار میداد. تیم سیمانتک هنگام جستجو در دادههای افشاشده توسط این کلیدها، موفق شد به فایلها و دادههای کاربران دسترسی پیدا کند. این نمونه به خوبی نشان میدهد که حتی یک شرکت بزرگ مانند مایکروسافت نیز در برخی محصولات خود دچار این اشتباه رایج میشود.
مطالعه موردی دوم: اپلیکیشن Cryptoport و ریسک کیف پولهای دیجیتال
Cryptoport یک برنامه محبوب برای نظارت و مدیریت ارزهای دیجیتال در صرافیهای مختلف است. سرمایهگذاران ارز دیجیتال از این برنامه برای داشتن یک کلید API واحد جهت دسترسی به تمام حسابهای ارز دیجیتال خود در چندین صرافی استفاده میکنند. Cryptoport از پلتفرم گوگل برای خدمات ابری، به ویژه پایگاه داده بیدرنگ Firebase استفاده میکند تا اطلاعات ارزهای دیجیتال کاربران از جمله کلیدهای API خصوصی برای صرافیها و حسابهای خارجی را ذخیره کند. اما چه کنترلهای دسترسی در اینجا قابل پیادهسازی است؟ قوانین امنیتی Firebase، کنترل دسترسی مبتنی بر ویژگی را ارائه میدهند که امکان دسترسی عمومی خواندن/نوشتن به داده یا اشتراکگذاری بین همه کاربران را فراهم میکند. ابزارهای آنلاین Firebase به توسعهدهندگان اجازه میدهند مستقیماً این قوانین را تنظیم یا غیرفعال کنند. به طور پیشفرض، این ابزارها پروژه را در حالت قفل شده قرار میدهند که از دسترسی کامل خواندن/نوشتن به همه دادههای کاربر جلوگیری میکند. متأسفانه، برخی توسعهدهندگان عمداً پروژه را در «حالت آزمایشی» قرار میدهند که دادههای کاربر را افشا میکند. Cryptoport در میان هزاران برنامهای بود که به دادههای کاربران خود بدون نیاز به احراز هویت اجازه دسترسی میداد. Worse still، دادههای افشاشده شامل توکنهای دسترسی خصوصی کاربران به صرافیهای مختلف بود که به طور بالقوه به مهاجمان اجازه میداد حسابهای ارز دیجیتال کاربران را خالی کرده و زیان صدها هزار دلاری ایجاد کنند.
مطالعه موردی سوم: برنامههای Jacto و باجافزار تراکتورها
در سال ۲۰۱۷، سیمانتک در گزارشی نشان داد که برنامههای Jacto از سرورهای پشتیبان ناامن استفاده میکنند. Jacto تولیدکننده جهانی ماشینآلات کشاورزی مانند سمپاشهای خودکشش، سیستمهای خودکار و راهیاب برای مزارع بزرگ است. ماشینهای آنها به شبکههای سلولی و وایفای متصل میشوند تا از طریق برنامههای Jacto اطلاعات را به سرورهای اختصاصی ارسال کنند. سه برنامه که سرورهای پشتیبان ناامن مشترکی داشتند، شناسایی شد: Jacto Smart Selector، OtmisNET و OtmisNET - Homologation. این برنامهها به تنظیم پارامترهای خودکار و نظارت بر دادههای عملیاتی در زمان واقعی کمک میکنند. محققان سیمانتک دریافتند که سرور پشتیبان Elasticsearch کنترلهای امنیتی کافی ندارد و تمام دادهها را در معرض عموم قرار میدهد. بدتر اینکه، دادههای افشاشده تراکتورهای Jacto حداقل یک بار توسط مهاجمی که بیتکوین درخواست کرده بود، گروگان گرفته شده بود. مهاجم ظاهراً یک کپی کامل از کل پایگاه داده گرفته و پیشنهاد داده بود پس از دریافت پول، کپی خود را حذف کند. با قضاوت بر اساس وجود فهرست باجافزار در سرور از ژانویه ۲۰۱۷، به نظر میرسد Jacto یا به درخواست مهاجم پاسخ نداده و یا پول را پرداخت کرده اما نتوانسته ارجاع حمله را از پایگاه داده حذف کند. این نمونه نشان میدهد که اعتماد کورکورانه به امنیت سرورهای پشتیبان، چه عواقب خطرناکی میتواند داشته باشد.
بهترین روشها برای اجتناب از اعتماد کورکورانه در توسعه برنامه
توسعهدهندگان همیشه از کلیدهای اشتراکی استفاده نمیکنند، اما گاهی بدون پیادهسازی کنترلهای حساب مبتنی بر نقش مناسب، از کلیدهای اشتراکی برای تمام دادههای کاربر بهره میبرند. در موارد دیگر، کلیدهای ناامن اشتراکی از واحد فناوری اطلاعات سازمان دریافت میشود و توسعهدهنده بدون بررسی، فرض میکند آن کلیدها امن هستند. برای اجتناب از این اشتباه، توسعهدهندگان باید بهترین شیوههای امنیتی برای به اشتراکگذاری و استفاده از منابع ارائهدهنده فضای ابری را دنبال کنند. استفاده از گزینههای صحیح کنترل دسترسی میتواند از افشای داده جلوگیری کند. مایکروسافت راهنمای چکلیست امنیتی مفیدی برای Azure Storage منتشر کرده است. توسعهدهندگان هرگز نباید منابع ابری در نظر گرفته شده برای دادههای کاربر را با دادههای داخلی شرکتی مجدداً استفاده کنند و باید اطمینان حاصل شود که همه اشتراکگذاریها با مجوزهای متناسب با دادههای ذخیره شده، به درستی قفل شدهاند. همچنین میتوان به ابزارهایی تکیه کرد که کشف سرویسهای ابری ناامن را به عنوان بخشی از چرخه عمر توسعه نرمافزار خودکار میکنند.
نقش سیمانتک در محافظت در برابر این اشتباهات
توسعهدهندگان باید به شدت استفاده از یک متخصص امنیت برنامه را برای اعتبارسنجی و تأیید محافظت از دادهها در نظر بگیرند. این موضوع به ویژه زمانی مهم است که توسعهدهندگان بهترین شیوههای امنیتی را دنبال میکنند اما منابع خارج از کنترل آنها - اغلب از تیمهای DevOps و فناوری اطلاعات - در محافظت از دادههای کاربر ناکام میمانند. برای سازمانها، راهکار Symantec Endpoint Security از دستگاههای موبایل شرکتی در برابر بهرهبرداری از آسیبپذیریهای ناشی از اشتباهات توسعهدهندگان محافظت میکند. این راهکار مشکلات درون خود برنامه مانند اعتبارنامههای سختکد شده، استفاده از سرویسهای ابری شخص ثالث و خروج داده را شناسایی کرده و همچنین از دستگاههای موبایل در برابر سایر تهدیدات شبکه، سیستمعامل و سطح برنامه محافظت مینماید. علاوه بر این، سیمانتک با راهکار Cloud Workload Protect به صورت پیشگیرانه سرویسهای ابری سازمانی را برای پیکربندیهای اشتباهی که منجر به افشای داده میشوند، اسکن میکند. این محصول تضمین میکند که حسابهای شرکتی در سرویسهای ابری به درستی پیکربندی و ایمن شدهاند.
از اعتماد کورکورانه تا امنیت مسئولانه
توسعهدهندگان برنامههای موبایل نمیتوانند با چشم بسته به ارائهدهندگان خدمات ابری یا تیمهای داخلی فناوری اطلاعات اعتماد کنند. امنیت دادههای کاربر یک مسئولیت مشترک است و توسعهدهنده نقش کلیدی در آن دارد. اشتباهاتی مانند سختکد کردن کلیدهای اشتراکی، استفاده از حالت آزمایشی پایگاههای داده و عدم پیادهسازی کنترل دسترسی مبتنی بر نقش، میتواند عواقب فاجعهباری از جمله افشای اطلاعات بهداشتی، سرقت رمزهای ارز دیجیتال و حتی باجافزاری شدن ماشینآلات صنعتی به همراه داشته باشد. سیمانتک با ارائه راهکارهای تخصصی مانند Mobile Threat Defense و Cloud Workload Protect، به سازمانها کمک میکند تا این شکافهای امنیتی را شناسایی و برطرف کنند. اما در نهایت، خود توسعهدهندگان هستند که با پیروی از بهترین شیوهها، استفاده از ابزارهای خودکار و مشورت با متخصصان امنیت، میتوانند از اعتماد کورکورانه به امنیت ابر جلوگیری کرده و حریم خصوصی کاربران خود را به طور واقعی تضمین نمایند. به یاد داشته باشید، هزینه پیشگیری از نشت داده همیشه کمتر از هزینه جریمههای نظارتی و از دست دادن اعتماد کاربران خواهد بود.