کمیته رکن چهارم – همه روزه بیش از ۱۰۰۰ برنامه کاربردی بر روی اینترنت منتشر میشود که بعضی از آنها مورد علاقه هکرها و مجرمان سایبری هستند. شما هر نقشی که در راهبرد برنامه توسعه کسبوکار سازمان تان داشته باشید باز هم لازم است رایجترین مسایل امنیتی و نحوه مقابله با آنها را بدانید.
در سال های اخیر با توسعه روزافزون تلفن های همراه هوشمند و همچنین برنامه های کاربردی قابل نصب بر روی آنها، امنیت چنین تجهیزاتی با چالش های زیادی روبرو شده است. این چالش ها می توانند شامل توسعه سریع، یکپارچه سازیهای چندگانه و کاربرانی که عموماً خارج از کنترلها و مرزهای سنتی سازمانها فعالیت دارند نیز باشند. در این مقاله، با ۸ الزام امنیتی که در خصوص نصب و استفاده از برنامه های کاربردی باید بدانید آشنا خواهیم شد.
۱- اعتماد محض به امنیت برنامه های کاربردی
همان طور که اشاره شد، هر روز بیش از هزار برنامه کاربردی برای تلفن های همراه عرضه و منتشر می شود اما با این وجود، هیچ کدام از آنها از امنیت صد در صد برخوردار نبوده و در برابر تمامی مخاطرات امنیتی مصون نیستند. سیستم عامل iOS اپل که مدت زمان زیادی است به عنوان یکی از امنترین سیستمعاملهای جهان به شمار می رود، تمامی برنامههای کاربردی مخصوص به خود را پیش از آن که به کاربران ارایه شده و در فروشگاه iTunes قرار گیرند، ابتدا در فرایند ارزیابی پیچیده ای بررسی کرده و سپس اقدام به انتشار آنها در این وب سایت می کند. البته باید گفت که چنین موضوعی، دلیلی مبنی بر این که همه برنامههای کاربردی اپل امن هستند هم نیست چرا که فرایند ارزیابی قاعدتاً نمیتواند تمامی تهدیدها و آسیبپذیریها را بررسی کند.
سیستم عامل اندروید نیز با تأیید کلیه برنامههای کاربردی جدید و ایجاد امکان ارزیابی برنامههای خوب و بد توسط کاربران به وسیله نظرات و بازخوردهایی که از دستگاههای آنها دریافت میکند، رویکرد متفاوتی را در حوزه امنیت برنامه های تلفن همراه برگزیده است.
خوب است بدانید که هر دوی این سیستم عاملها نقاط ضعف خاص خود را داشته و شما نمیتوانید به هر سیستم عاملی برای محافظت کامل از اطلاعات خودتان اعتماد کنید. با گسترش سریع تهدیدهای سایبری و پیچیدگی حملات سایبری، عوامل بسیار زیادی وجود دارند که توسعه دهندگان سیستمعاملها و برنامه های کاربردی تلفن همراه باید همواره آنها را در نظر بگیرند.
۲- استفاده از کدهای سایر توسعه دهندگان
اغلب زمان زیادی برای ایجاد یک برنامه، آن هم از صفر نیاز است. بنابراین توسعه دهندگان زیادی برای افزایش سرعت فرایند تولید برنامه ها، از کدهایی که منبع آنها در دسترس همگان قرار دارد در توسعه های خود استفاده می کنند. معمولاً حدود ۹۰ درصد از برنامههای کاربردی جدید، برگرفته از چنین کدهایی هستند.
امروزه این کدها به پیشرفته ترین روش حمله برای مجرمان سایبری تبدیل شده اند. متأسفانه بعضی از هکرها کدهای مخربی را به امید این که برنامهنویسان از این کدها در برنامههایشان استفاده کنند، تولید کرده و چالش های امنیتی جدی را برای توسعه دهندگان و در نهایت کاربران برنامه ها رقم می زنند. هکرها اغلب در پی سوءاستفاده از تمایل برنامه نویسان برای اعتماد به سایر کدهای منبع هستند.
اگر چه هیچ اشکالی در ایجاد ساختاری جدید آن هم با استفاده از ایدههای دیگران وجود ندارد و کدهایی که منابع آنها در دسترس عموم قرار گرفتهاند میتوانند در صرفهجویی در زمان برنامه نویسان واقعاً مؤثر باشند؛ اما باز هم لازم است تا از میزان امنیت در استفاده از کدهای سایر برنامه نویسان و توسعه دهندگان اطمینان حاصل کرده و به طور مداوم امنیت این کدها را در طول زمان استفاده ارزیابی کنید. از راهکارهایی که مخصوص مانیتورینگ و شناسایی چنین آسیبپذیریهایی هستند، استفاده کرده و این راهکارها را با ابزارها، فنون و فرایندهای خودتان تقویت کنید. از رویکردهای محتاطانه استفاده کنید؛ به سایر توسعه دهندگان اعتماد کرده ولی خودتان را مدام ارزیابی کنید (هیچ وقت کورکورانه به یک منبع اعتماد نکنید). همیشه از کدهای با منابع معتبر استفاده کنید.
۳- نداشتن رویه ای برای شناسایی و برطرف سازی آسیبپذیریها
برای ذخیره دادهها به روشی امن بر روی دستگاه تلفن همراه، به تکنیکهای مناسبی نیاز است. در حال حاضر امن ترین روش این است که هیچ دادهای را در حافظه کش یا حافظه اصلی سیستم ذخیره نکرده تا بتوانید داده های کاربران را کمتر در معرض خطر قرار دهید.
راههای زیادی برای افشای داده های کاربران به شکل غیرعمدی وجود دارد. برنامه نویسان در هنگام توسعه یک برنامه کاربردی، معمولاً بعضی از روش های ذخیره داده ها را که ممکن است برای کاربران مخاطرات جدی ایجاد کند از قلم میاندازند. به عنوان مثال:
- فایلهای لاگ و اشکال زدایی
- کش و تاریخچه وب
- کوکیها
- فایلها و لیستهای ویژگی
- پایگاه دادههای SQLite
- KeyStore و Keychain
لاگهای رفع اشکال عموماً برای شناسایی و اصلاح نقصها در برنامههای کاربردی طراحی شدهاند. از طرف دیگر زمانی که یک برنامه دچار اختلال میشود، اطلاعات ارزشمند به شکل یک لاگ، گزارش آن اختلال را در اختیار مهاجم قرار می دهند. هر دوی این مدل لاگها میتوانند منجر به افشای اطلاعات حساسی شوند که میتواند به مهاجم در ایجاد حملهای دیگر کمک کند. نکته بعدی اینجا است که استفاده از قابلیتهایی همچون «مرا به خاطر بسپار (Remember me)» در هنگام ورود به یک حساب کاربری را محدود کنید، چون با ذخیره بخشی از داده های کاربر می تواند او را دچار مخاطره کند.
به عنوان مثال اگر کاربری گزینه «ذخیره کلمه عبور» را فعال کند، نام کاربری وی در بخش “CredentialsManager” در سیستم عامل iOS ذخیره میشود که همین موضوع می تواند تهدیدهایی را برای او به وجود آورد.
برنامه های کاربردی فروشگاهی بر روی هر دو سیستم عامل iOS و اندروید به شکلی طراحی می شوند که آنچه را که کاربر تایپ میکند برای فراهم کردن قابلیتهایی نظیر تکمیل سفارشی خودکار، تصحیح خودکار و تکمیل فرم های برنامه کاربردی ذخیره میکنند. در هنگام توسعه برنامه های کاربردی می توان به شکلی طراحی آن را انجام داد که دادههای حساس، توسط برنامه از حافظه کش پاک شوند.
زمانی که داده های تایپ شده توسط کاربر در برنامه کاربردی ذخیره شوند، در زمان اجرای برنامه، نام کاربری پیش از آن که هرگونه احراز هویتی رخ دهد درون حافظه بارگذاری شده و زمینه را برای انجام هر نوع فرایند مخربی فراهم میکند. به همین دلیل برای جلوگیری از نشت اطلاعات، حتی دادههای رمزنگاری شده نیز باید بعد از رمزگشایی، بلافاصله از حافظه دستگاه پاک شوند.
شما میتوانید در هنگام برنامه نویسی از روش های پیشگیرانه استفاده کرده و به گونه ای برنامه نویسی کنید که با هر بار راهاندازی مجدد دستگاه یا خروج از برنامه، دادههای موجود در حافظه کش به صورت خودکار پاک شوند. همچنین میتوانید فناوری هایی نظیر سرویس احراز هویت کاربر، ورود یکباره (Single Sign On) و Touch ID را برای جلوگیری از نشت اطلاعات در هنگام توسعه برنامه کاربردی خود، به کار ببرید.
ذخیره عکس ها در حافظه کش نیز از دیگر مواردی است که می تواند مخاطراتی را برای کاربر به همراه داشته باشد. برنامههای کاربردی که امکان عکس برداری از اسناد با استفاده از دوربین گوشی تلفن همراه و بارگذاری آن در حساب یک مؤسسه مالی یا هر نوع حساب دیگری را فراهم میکنند اغلب این تصاویر را حتی پس از پاک شدن نیز در حافظه NAND تلفن (حافظه غیرفرار) باقی میگذارند.
روش کار خود برنامه نیز نگران کننده است. سیستم عامل iOS ، عکس های فوری را در قسمت فایلهای سیستمی حافظه فلش NAND دستگاه ذخیره میکند. زمانی که دکمه “Home” گوشی فشرده شده و برنامهای در حالت تعلیق قرار میگیرد یا اتفاق دیگری به صورت موقتی منجر به فرایند تعلیق شدن یک برنامه میشود، تصویری از صفحه برنامه ذخیره شده و به کاربر نمایش داده می شود. در بیشتر وقت ها ذخیره و بازیابی این عکس ها به منظور بازیابی برنامه معلق، بدون اشکال است اما نکته اینجا است که این تصاویر اغلب دادههای کاربر و برنامه را نیز بسته به این که برنامه پیش از رفتن به حالت تعلیق در حال نمایش چه دادههایی بوده است در خود دارند و همین موضوع می تواند مخاطرات خاص خود را به همراه داشته باشد.
شیوههای سنتی بازنویسی یک فایل به دلیل مدیریت تهاجمی حافظه فلش NAND، عموماً بر روی دستگاههای تلفن همراه به درستی کار نمیکنند چرا که چنین فایلهایی تا زمانی که بر روی آنها بازنویسی شود، حتی پس از حذف شدن نیز می توانند درون یک فایل باقی بمانند (file.delete) و ممکن است از حافظه برداشت شوند.
۴- استفاده از آزمون های امنیت و حریم خصوصی
اگر شما یک توسعهدهنده برنامه های کاربردی هستید، در برابر تهدیدات سایبری که همه روزه کاربران تلفن همراه را دچار مشکل می کند مسئول هستید. اگر از تأمین امنیت لازم توسط برنامه خود اطمینان ندارید، تمامی کاربران و دادههای شان و همچنین داده های خود را در معرض خطر قرار خواهید داد. این مفهوم به این معنی است که شما می بایست پیش از انتشار برنامه کاربردی خود بر روی اینترنت، با دقت و حوصله آن را از دیدگاه امنیت و حریم خصوصی مورد تست و آزمایش قرار دهید.
در حداقل حالت ممکن باید تجزیه و تحلیل های پویا و ایستا را بر روی برنامههای کاربردی خود انجام دهید.
تست ایستا: با تست ایستای امنیت برنامه (STAT)، برنامههای خود را از داخل به خارج تست کرده تا بتوانید نقصها و آسیبپذیریهای موجود در کدهای برنامه که ممکن است منجر به افشای دادههای کاربران شوند را شناسایی کنید.
تست پویا: تست خودکار یا دستی امنیت برنامه که نام مستعار آن «تست پویای امنیت برنامه (DAST) » است برای تجزیه و تحلیل های برنامهها ضروری است. این تست، روی سختافزار دستگاه اجرا میشود تا آسیبپذیریها و رفتارهای پرخطر در حین اجرای برنامه کاربردی را شناسایی کند. چنین تستی شامل تجزیه و تحلیل ورودی ها و همچنین رفتار برنامه در مواجه با این ورودی ها است.
هر بار که کد جدیدی در ساختار برنامه قرار میگیرد آن را تست کنید. تست خودکار امنیت تلفن همراه را با SDLC ادغام کنید. بنابراین به محض پیادهسازی یک جریان کاری ساخت تست توسعه، با هر بار وارد شدن یک ساختار به برنامه می توان یک ارزیابی امنیتی را آغاز کرد. این روش به برنامه نویسان اجازه تمرکز بر روی کدنویسی را می دهد درحالی که مسئولیت مدیریت مسایل امنیتی که در طول توسعه برنامه کاربردی مشاهده می شود همچنان به عهده تیمهای امنیتی قرار میگیرد.
۵- استفاده از رمزنگاری ضعیف (یا عدم استفاده از رمزنگاری)
فناوری مدام در حال پیشرفت است. در نتیجه، الگوریتمهای رمزنگاری که معمولاً به کار گرفته می شوند، به تدریج منسوخ شده و کرک کردن آنها هر روز سادهتر میشود. اگر از رمزنگاری ضعیفی در توسعه برنامه کاربردی خود استفاده کنید یا این که تصمیم بگیرید اصلاً از رمزنگاری در برنامهتان استفاده نکنید، داده های حساس کاربر را در معرض مخاطره قرار خواهید داد.
بسیاری از برنامههای کاربردی از کاربر می خواهند که اطلاعات حساسی همچون شماره کارت بانکی یا اطلاعات شناسایی شخصی وی را به عنوان ورودی وارد کند. اگر رمزنگاری قوی برای داده ها در آن برنامه کاربردی در نظر گرفته نشده باشد، این اطلاعات میتوانند در معرض خطر قرار بگیرند. هر چه برنامه از محبوبیت بیشتری در بین کاربران برخوردار باشد احتمال آن که مورد هدف مهاجمان قرار بگیرد نیز بیشتر خواهد بود.
همواره از این که پیادهسازی برنامه و پیکربندی آن به روز بوده و با روش درستی صورت گرفته باشد، اطمینان حاصل کنید. سایر روش ها مانند رمزنگاری رشتهای میتوانند در سطح کد، مورد استفاده قرار گیرند. رمزنگاری جعبه سفید نیز در حفاظت دادههای حساس، چه در حالت ایستا و چه در زمان اجرا قابل استفاده است.
۶- برنامهریزی برای مهندسی معکوس برنامه های کاربردی
توسعه دهندگان برنامههای کاربردی نمیتوانند کار چندانی برای جلوگیری از سرقت یا گم شدن دستگاههای تلفن همراه انجام دهند اما پیادهسازی کد توقف یک نشست محلی میتواند تا حدودی مفید باشد. معمولاً، کاربران برای ورود به حساب کاربری خود در یک برنامه کاربردی باید کلمه های عبور خود را به صورت دورهای تغییر دهند. گاهی وقت ها، برنامه هایی بر روی دستگاههای تلفن همراه نصب هستند که کلمه های عبور را به خاطر میسپارند اما توقف نشست محلی می تواند از این امر جلوگیری کند.
فرض کنید یک دستگاه تلفن همراه، مفقود یا سرقت شده است. مجرمان، اغلب برای به دست آوردن داده های با ارزش در خصوص نحوه کارکرد برنامه های کاربردی، از مهندسی معکوس استفاده میکنند. هر چه زمان اجرا و پیچیدگی کدهای برنامه کاربردی مورد نظر بیشتر باشد، تجزیه و تحلیل و در نتیجه درک برنامه توسط مهاجم کم می شود. به این ترتیب از قدرت حمله و میزان داده هایی که مورد سوءاستفاده مهاجمان قرار می گیرند هم کاسته خواهد شد. تکنیکهای امنیتی که می توان از آنها برای برقراری امنیت در چنین شرایطی استفاده کرد، عبارت از ایجاد ابهام زدایی کد، جریان کنترل، شناسایی رفع اشکال و شناسایی root و جیلبریک هستند.
مهاجمان معمولاً برنامههای کاربردی موجود بر روی اینترنت را با افزودن توابع عملیاتی مخرب به آنها تغییر داده و سپس آنها را بر روی سایر سایتها و فروشگاههای برنامه های کاربردی منتشر می کنند. پس برنامه هایی که کاربران دانلود می کنند ممکن است توسط مهاجم دستکاری شده، سیستم امنیتی که برای آن در نظر گرفته شده است را دور زده و مجدداً توسط مهاجم منتشر شده باشند. ثبت کد، تأیید منبع، شناسایی دستکاری و تأیید یکپارچگی میتوانند میزان این دستکاری ها را به شدت کاهش دهند.
۷- عدم پیادهسازی ارتباطات امن
برنامههای کاربردی را تولید کنید که به اطلاعات حساس کاربرانی که به یک سرور متصل میشوند، اهمیت دهند. به بیانی دیگر بتوانند انتقال امن را تضمین کنند. این نوع از امنیت اساساً به وسیله پروتکلهای رمزنگاری قوی، رمزها و الحاق گواهی TLS/SSL یا کلید عمومی حاصل میشود. کلیدها و رمزهای برنامه همراه با سایر تکنیکها، لایههای محافظتی اضافهای را برای شما فراهم میکنند.
۸- وصله کردن کند برنامهها
کار شما پس از انتشار برنامه کاربردی که توسعه داده اید پایان نمیپذیرد. هکرها سریعتر از آنچه فکرش را بکنید عمل کرده و ممکن است برای برنامه شما مخاطراتی را ایجاد کنند. معمولاً مهاجمان، برنامه هایی را که به صورت مداوم به روزرسانی های امنیتی منتشر نمی کنند را زیر نظر گرفته و تلاش می کنند از حفره های امنیتی موجود در آن برنامه حداکثر استفاده را ببرند. پس شما به عنوان یک توسعه دهنده برنامه های کاربردی برای تلفن همراه باید همواره برنامه خود را برای انجام بهروزرسانیهای امنیتی بازبینی کنید. هر چند وصله های امنیتی جدیدی که برای برنامه کاربردی مورد نظر منتشر می شود برای آن که در اختیار کاربران قرار بگیرد اندکی زمان میبرد. برای مثال، پروسه تأیید اپل برای پذیرفتن انتشار یک وصله جدید برای برنامه کاربردی مورد نظر میتواند به اندازه یک هفته زمان ببرد. علاوه بر این، تمامی کاربران تلفن همراه باید آن وصله امنیتی را دانلود کرده و نصب کنند. اگر با بهروزرسانیهای امنیتی همگام نباشید، وصله ها در زمانهای مناسب به دست کاربران نرسیده و آنها را در معرض مخاطرات امنیتی قرار خواهید داد.
زمانی که برنامه کاربردی شما با اطلاعات بانکی و اطلاعات شخصی کاربر سروکار داشته باشد، هیج حاشیه امنی برای خطا کردن وجود نخواهد داشت. پیامدهای یک شکاف امنیتی برای ذینفعان آن برنامه کاربردی فاجعه بار است. پیش از رخ دادن هر اتفاقی، به همه چیزهای خوب فکر کرده و تمامی جوانب امنیتی لازم را برای محافظت از برنامه کاربردی خود و داده های کاربران در نظر بگیرید.
نتیجهگیری
این مسأله بسیار مهم است که تمامی روش های متنوعی که برای برقراری امنیت برنامه کاربردی مورد نظر وجود دارد را از طریق اتخاذ تصمیم های توسعهای هوشمندانه مدنظر قرار دهید. از سازمانهایی که به صورت داخلی برنامههای کاربردی را توسعه و گسترش میدهند گرفته تا کارکنانشان، همگی ابزارهای دیگری هستند که باید آنها را نیز در نظر گرفت. رویکرد مدیریت پویایی یک سازمان (EMM) زمینه را برای برقراری امنیت در مواردی که مستقیماً در توسعه خود برنامه در نظر گرفته نشده است فراهم میکند. این محافظتها با یک مورد پایهای و بسیار بااهمیت آغاز میشوند: شناسایی و پاکسازی دستگاه iOS که جیلبریک شده یا دستگاه اندرویدی که root شده است. اگر سیستم امنیت داخلی سیستمعامل یک تلفن همراه غیرفعال شده باشد، هیچ یک از راهکارهای امنیتی مخصوص آن نمیتوانند دادهها را به مدت طولانی امن نگاه دارند چرا که بسیاری از ساختارهای کنترلی ایجاد شده، با توجه به قابلیتهای امنیتی سیستمعامل تلفن همراه ساخته میشوند و برای اجرا به آن نیاز دارند.
ورای امنیت جیلبریک و root، راهکار EMM میتواند امکان نیاز به احراز هویت، پیش از راهاندازی برنامه کاربردی مورد نظر و توانایی اعمال قوانین امنیتی متنوع به منظور پیشگیری از نشت دادهها را در اختیار سازمانها قرار دهد. برای مثال، برنامه کاربردی و دستگاه تلفن همراه ممکن است امن باشند اما آیا انتقال داده ها نیز امنیت لازم را دارد؟ آیا آن برنامهها میتوانند تنها از طریق کانالهای ارتباطی امنی مانند VPN کار کنند؟ این موضوع و بسیاری از آسیبپذیریهای دیگر میتوانند با کمک گنجاندن رویکرد EMM در درون سازمان، مدنظر قرار گیرند.
ترکیب راهبردهای توسعه به همراه EMM ، جامعترین روش برای ایجاد اطمینان از امن ماندن دستگاههای تلفن همراه، برنامههای کاربردی و دادههای حساس آنها در این دنیای ناامن دیجیتالی است.
منبع: فراست