امنیت اپلیکیشن (Application Security) چیست؟
هدف این مقاله، تهیه لیستی کامل از مجموعه سوالاتی است که شرکتها باید در زمان برونسپاری و درخواست برای ارائه طرح پیشنهادی و حل مسئله امنیت اپلیکیشن (Application Security) یا وب اپلیکیشن خود، از فروشندگان بپرسند. یک درخواست ارائه طرح پیشنهادی (RFP) اعلانیهای است که توسط یک سازمان برای برگزاری مناقصه توسط ارائهدهندگان خدمات یا فروشندگان، و در جهت برآوردهکردن یک نیاز از سازمان، تهیه میشود و غالبا با سندسازی همراه است.
اطلاعاتی که شرکت در RFPها انتشار میدهد از اهمیت بالایی برخوردارند. وقتی یک RFP برای پروژه امنیت اپلیکیشن (Application Security) طراحی میکنید، تاکید باید بر ارائه شفاف اطلاعات درباره دامنه فعالیتهای تایید و معیارهای ارزیابی باشد تا ارائه دهندگان خدمات و فروشندگان پیشنهاداتی را به شرکت دهند که قابل مقایسه باشند.
معمولا اطلاعات RFP شامل سوالات استانداردی درباره روشهای تامین امنیت اپلیکیشن (Application Security) متناظر با هر فعالیت، تجربه پروژههای مشابه و … است. سایر سوالات به مواردی چون سطح پوشش امنیت، فرایند ارزیابی ریسک، تکنیکهای گزارش دهی و غیره مرتبط هستند. در بخشهای بعدی، اطلاعاتی را ارائه میدهیم که باید در ارزیابی پروژههای تامین امنیت سایبری اپلیکیشنها مورد توجه قرار گیرند.
قبل از ادامه این بحث جذاب، اگر هنوز امنیت سایبری را نمیشناسید، پیشنهاد ما به شما:
مطالعه مقاله امنیت سایبری چیست و چه اهمیتی دارد؟
چرا امنیت برنامه (Application Security) اهمیت دارد؟
بنظر شما چرا امنیت اپلیکیشن (Application Security) اهمیت دارد؟ میتوانیم برای پاسخ به این سوال اینگونه پیش رویم؛ کاربران همیشه بر روی امنیت اطلاعات خود حساس هستند. هیچ کاربری علاقه به استفاده از بدافزارها و برنامههای مضر ندارد. پس امنیت اپلیکیشن (Application Security)، فعالیتی بسیار حساس به شمار میرود که ما باید به آن توجه ویژهای داشته باشیم. خیلی از اوقات یپش میآید که کاربران اطلاعات مهم و حساس خود را در برنامههای موبایل ذخیره و نگهداری میکنند.
هکرها، وقتی اپلیکیشنها را هک میکنند که در ضعف امنیتی ببینند. در نتیجه اگر شما هم در زمینه طراحی اپلیکیشن فعالیت میکنید، باید اطمینان داشته باشید که سیستم مورد نظر شما توانایی بالایی دارد. در غیر این صورت، با مشکلات جدی مانند مدیریت کاربران و همچنین تامین اطلاعات و آرامش آنها مواجه خواهید شد.
اطلاعات پیشنهادی که مشتری باید در اختیار ارائه دهنده خدمات قرار دهد
خطوط کد در امنیت اپلیکیشن (Application Security)
خطوط کد (LOC) که معمولا خطوط منبع کد (SLOC) نیز خوانده میشود، یک فعالیت تاییدی است که به بررسی کد منبع میپردازد و لازمه هر طرح پیشنهادی است. این متریک نرمافزار (LOC) اطلاعاتی در مورد مقیاس برنامه هدف ارائه میدهد. پکیجهای نرمافزاری برای دامنه عمومی مثل LocMetrics یا CLOC ، برای شمارش تعداد خطوط موجود در کد قابل استفادهاند. اطلاعات اضافی در مورد LOC مانند اینکه آیا این شمارش کد منبع را نیز شامل شده است یا خیر، نیز مفیدند.
تعداد صفحات پویا
توصیه میشود که درباره صفحات پویا نیز اطلاعاتی در RFP آورده شود چراکه مقیاس اپلیکیشن تحت بررسی را بهتر مشخص میکند. در راستیآزماییهایی که شامل تست نفوذ دستی هستند نیز اطلاعات صفحات پویا مهماند. در هنگام تخمین تعداد صفحات پویا، به صفحات با عملکرد یا هدف منحصربهفرد توجه بهتری داشته باشید. اگر urlهایی چون :
- /display_results.php?rs=1
- /display_results.php?rs=2
- /display_results.php?rs=3
دارید، باید مشخص کنید که آیا به یک صفحه منحصربه فرد پویا اشاره دارند یا خیر.
اگر هنوز با مفهوم تست نفوذ آشنا نیستید، حتما مطالعه کنید
مطالعه مقاله تست نفوذ چیست؟ برای آشنایی بیشتر با این مفهوم
فهرستی از نقشهای کاربری و توضیحات هر نقش در امنیت برنامه
کاتالوگ نقشهای کاربری برای تمام تلاشهای راستیآزمایی تأیید میشود، زیرا زمینه موردنیاز را برای بالفعلشدن آسیبپذیریها (در صورت وجود) فراهم میکند.
خلاصهای از اپلیکیشن و معماری آن
این اطلاعات مختص اپلیکیشنهایی است که معماری غیراستاندارد دارند، مانند اپلیکیشنهایی که از کلاینتهای ضخیم، سرویسهای وب یا ترکیبی از انواع جدید با سیستمهای قدیمی استفاده میکنند. برای اپلیکیشنها با نسخه 2.0 این مرحله الزامی نیست. اطلاعات توصیهشدهای که مشتری باید به ارائهدهندگان خدمات یا فروشندگان ارائه دهد. و همچنین معماری استاندارد وب اپلیکیشن (وب سرور، سرور برنامه، راهاندازی سرور پایگاه داده).
درجه تأیید مورد انتظار در امنیت اپلیکیشن (Application Security)
برای مدیریت یا جلوگیری از ارائه پیشنهادهای نامنظم و نامرتبط در ارقام یا جدول زمانی متفاوت از سوی تأمینکنندگان، باید مشتری راهنمایی کامل در خصوص سطح تایید مورد نیاز خود را تعریف کند. این اطلاعات باید شامل الزامات زیر باشند:
- اسکن آسیبپذیری پویا
- بررسی کد دستی
- تست نفوذ دستی
- تجزیه و تحلیل استاتیک
- بررسی معماری امنیتی
- تجزیه و تحلیل کدهای مخرب
- مدلسازی تهدید
تعداد یا مدت زمان انجام تایید
به طور مشخص تعیین کنید که به یک تمرین تایید نیاز دارید یا میخواهید چندین تمرین تایید در یک بازه زمانی مشخص انجام گیرند.
پیشینه شرکت
برای این بخش، نیاز است که موارد زیر را درنظر داشته باشید:
- محصولات یا خدمات ارائه شده توسط شرکت خود را خلاصه کنید.
شرکت شما چند وقت است که چنین محصولات یا خدماتی را به مشتریان خود ارائه میدهد؟ لطفا هرگونه اطلاعات مرتبط در مورد نقاط عطف مهم مانند خریدهای مهم، ادغامها، معرفی یا حذف رشتههای تجاری مرتبط را ارائه کنید. - درباره تجربه خود در مورد اپلیکیشنهایی با مقیاس و حوزههای فعالیت مشابه، اطلاعاتی را به شرکتکنندگان در مناقصه بدهید.
- آشنایی و تجربه خود با چهارچوبها، کتابخانهها، زبانها و سایر فناوریهای مرتبط که شامل اپلیکیشنهای مورد تایید هستند را مشخص کنید.
- آیا با سازمانها یا ذینفعان در جامعه امنیتی برنامه، مانند پروژه امنیت وب اپلیکیشن باز (owasp) و کنسرسیوم امنیت برنامههای کاربردی وب (WASC) آشنایی و فعالیتی دارید؟ اگر جواب بله است، نقش اجرایی خود را مشخص کنید.
- اطلاعات زمینهای مفید دیگر در مورد سازمان و صلاحیت خود برای ارائه محصول یا خدمات را نیز توضیح دهید.
روش تأیید امنیت برنامه (Application Security)
روششناسی پیشنهادی خود برای استفاده از تمام تکنیکهای تأیید با جزئیات را به طور واضح بیان کنید:
- اسکن آسیبپذیری پویا
- تجزیه و تحلیل کدهای مخرب
- بررسی دستی کدها
- آزمون نفوذ دستی
- بررسی معماری امنیتی
- تجزیه و تحلیل استاتیک
- مدلسازی تهدید
سوالات پیشنهادی برای RFP
- برای آمادهسازی و اجرای موفقیتآمیز تمرین تأیید اپلیکیشن از مشتری چه چیزهایی میخواهید؟
- آیا برای انجام پروژه از چندین تکنیک مختلف استفاده میکنید؟
- اگر جواب سوال بالا بله است، چگونه این تکنیکها و نتایج آنها را ترکیب میکنید؟
- سطح تعامل پیشنهادی خود با تیمهای توسعه نرمافزار، کارشناسان امنیتی و صاحبان فرایندهای تجاری را در طول فرایند تایید، مشخص کنید.
پوشش امنیتی
- آسیبپذیری و پوشش کنترل امنیتی که توسط فعالیتهای راستیآزمایی شما ارائه میشوند را توضیح دهید. در صورت لزوم، ارجاعاتی به OWASP، WASC 24، ASVS، گروههای گسترده از انواع حملات و OWASP 10 ارائه دهید.
- سطوح مختلف از فعالیتهایی را که در زمینه تایید ارائه خواهید دارد را توضیح دهید. چه تفاوتهایی در پوشش امنیتی بین سطوح مختلف وجود دارند؟
- در حال حاضر، امکان آزمایش جعل درخواست بین سایتی (CSRF) و تقسیم پاسخ HTTP را دارید؟
- شکافهای بالقوه در پوشش پیشنهادی فعلی چیست و چه اقداماتی برای کاهش این شکافها باید انجام داد؟
- آیا راهحلهای شما با استانداردهای فعلی PCI 6.6 مطابقت دارند؟
پوشش برنامه
- محصول یا خدمات شما تا چه اندازهای باعث پایهگذاری مناسب یک اپلیکیشن میشود؟
- چگونه محصول یا خدمات خود را تنظیم میکنید تا یک برنامه کاربردی را به بهترین نحو تایید کنید؟
- از چه روشها یا تکنیکهایی برای اطمینان از پوشش کل برنامه استفاده میکنید؟
- چگونه به مشتریان خود این اطمینان را میدهید که پوشش دقیقی برای اپلیکیشن ارائه میدهید؟
- چه شکافهای بالقوهای (در صورت وجود) بین راهحل پیشنهادی شما و پلتفرم و معماری اپلیکیشن تحت تایید وجود دارند؟
یک نکته: اگر اپلیکیشن هدف، شامل صفحات وب و خدمات وب باشد و آزمون شما خدمات وب را پوشش ندهد، یک شکاف امنیتی به وجود میآید. برای آشنایی با یکی از ابزارهای امنیت اپلیکیشن، پیشنهاد میکنیم مقاله تست استاتیک امنیت اپلیکیشن (SAST) را حتما مطالعه بفرمایید.
ارزیابی ریسک در امنیت اپلیکیشن (Application Security)
- روند ارزیابی ریسک خود را برای تشخیص آسیبپذیریهای احتمالی که امکان کشف آن را دارید و تأثیر آن بر کسب و کار را مشخص کنید.
- رویه شما برای مدیریت گزارش مثبت کاذب چیست؟
- روشهای خود را برای طبقهبندی خطرات مشابه در جذب آسان و اصلاح آنها، مشخص کنید.
متمایزکنندهها
- کدام یک از جنبههای فرایند تایید را چالشبرانگیزتر میدانید؟
- منحصر به فرد بودن رویه شما در اجرای این پروژه را توضیح دهید. چگونه و چرا این موضوع برای مشتری مهم است؟
مقاله پیشنهادی ما برای شما
مطالعه مقاله کدنویسی امن چیست؟
دامنه
- در یک تمرین مشابه، زمان تخمینی برای پیادهسازی محصول یا خدمت شما چقدر است؟
- مقیاسپذیری راهحل پیشنهادی برای چندین وبسایت را توضیح دهید.
- توصیههای موردنظر شما برای کاهش تاثیرات بر عملکرد اپلیکیشن در زمان اجرای آزمون شامل چه مواردی هستند؟
- مشخص کنید که آیا محصول یا خدمات شما برای آزمایش بر حسب تقاضا یا موردی کارایی و آمادگی لازم را دارد.
- مدت زمان موردنیاز برای شروع آزمایش چقدر است؟
امنیت
- رویکرد شما در محافظت از اطلاعات مشتری که در اختیارتان قرار میگیرد چیست؟ امنیت شبکه، امنیت ذخیرهسازی اطلاعات و خطمشی سطح آگاهی مورد نیاز خود را شرح دهید.
- سطح اعتمادی که به کارکنانی که روی این پروژه کار میکنند را به ما توضیح دهید.
- تکنیکها و سیاستهای مورد استفاده برای تبادل اطلاعات بین شما به عنوان فروشند و ما به عنوان مشتری را توضیح دهید.
- پس از پایان پروژه، رویکرد شما در پاکسازی اطلاعات مشتری از سیستمهای خود به چه نحوی است؟
- چگونه اطلاعات ما را از اطلاعات سایر مشتریان تفکیک میکنید؟
- طرح کلی (با شواهد ملموس) شما در محافظت از سیستمها و شبکه خود را توضیح دهید.
حجم کار در امنیت اپلیکیشن (Application Security)
هرگونه نیاز به بهره گیری از منابع (انسانی) سازمان را به ما بگویید. این توضیح باید شامل مجموعه مهارتهای فنی و عملیاتی و تجربه مورد نیاز شما باشد. الزاماتی را که شما از ما، برای اجرای تمرین راستیآزمایی، میخواهید با جزئیات عنوان کنید.
گزارش استنباطی
ساختار مستندات ریسک را مشخص کنید. این فعالیت باید شامل موارد زیر باشد:
- عنوان
مکان (URL و یا خط کد) - شرح آسیبپذیری در موارد خاص
- احتمال خطر و تاثیر و شدت آن بر تجارت
- قطعات کد
توصیههای اصلاحی خاص
- مدل ریسک موردنظر خود را شرح دهید. چگونه میتوان این مدل را سفارشی کرد تا استانداردها و انتظارات مشتری را شامل شود؟
- گزارش استنباطی خود را از طریق معیارهایی مانند منحنی یادگیری، چگونگی شکلگیری اجزای گزارش و …، توضیح دهید.
- بهروز رسانیهای مهم درباره ایمنسازی و اجرای برنامههای مختلف را چگونه در خدمات خود میگنجانید؟
- برای رصد ریسکهای شناسایی شده باز یا بسته و فعالیتهای اصلاحی، چه روند و گزارشهای تاریخی ارائه میدهید؟
- آیا امکان تولید و ارائه گزارش از وضعیت مورد توجه در نشان دادن موقعیت خطر برای برنامههای وب جداگانه و سلامت کلی امنیت همه اپلیکیشنهای کاربردی وب وجود دارد؟
- آیا این گزارشها برای ذینفعان مختلف، یعنی بخش مدیریت، قابل تنظیم هستند؟
- آیا اسکریپت استاندارد یا ادغامی استاندارد از آنها را دارید که همراه با راه حل اصلی، ارائه کنید؟ اگر بله برنامههای متناظر با آن را مشخص کنید.
- آیا گزارشهای شما دستورالعملهای خاصی را برای توسعهدهندگان برنامه ارائه میدهند که با مشکل موجود در کد هماهنگ باشد؟
- فرایند شما برای گزارش به موقع و قابل اعتماد در رویارویی با خطرات برای ذینفعان چیست؟
- گزارش شما هرچند وقت یکبار بهروز میشود؟ برای این به روز رسانی چه فرایندی را طی میکنید؟
- چه معیاری وجود دارد یا پیشنهاد میدهید تا توسعهدهندگان موفقیت مدیریت ریسک خود را بسنجند؟
نوآوری در امنیت برنامه (Application Security)
- شرکت شما چه نوآوری یا محصول مرتبط جدیدی را ارائه کرده است؟ این محصول جدید چه بهبودی در خدمات رسانی ایجاد کرده است؟
- فرایند شما برای شناسایی آسیبهای دیگر و آزمایش آنها چیست؟
- فرایند پیشنهادی شما در شناسایی تکنیکهای حمله جدید که میتواند آسیبپذیریهای موجود را شناسایی و اقدام کند، چیست؟
- فرایند موردنظر شما برای آزمایش فناوریهای جدید (مانند نسخههای جدید (FLASH) در موضوع آسیبپذیری اپلیکیشنها کدامند؟
ادغام
- فرمتهای استاندارد داده که محصول شما را تولید یا ارائه میدهد کدامند؟
- محصول یا خدمت شما با چه فناوریهای مرتبط دیگری (مثل برنامههای فایروال) قابل ادغام است؟
- در صورت ادغام، چه مزایایی حاصل میشود؟
مزایا امنیت اپلیکیشن (Application Security)
- چگونه میتوانید یا میخواهید کارایی فرایند اصلاح را بالا ببرید؟
- به نظر شما، توازن منابع داخلی و خارجی در یک برنامه امنیت اپلیکیشن (Application Security) به چه صورتی انجام میگیرد؟
- آیا میتوانید نتایج دقیقی ارائه دهید که فعالیتهای شما باعث کاهش یا حذف موارد مثبت کاذب شده باشند؟
- میتوانید یک اثبات مفهوم برای بازگشت سرمایه مثبت (ROI) و مزیتهای مدیریتی ارائه کنید؟
- آیا امکان و پتانسیل تاثیر بر تکنیکهای کدنویسی ایمن یا کاهش زمان صرفشده برای اشکالزادیی را دارید؟ اگر بله، از چه طریق؟
- مزیت فنی و تجاری که از همکاری با شما در این پروژه به دست خواهیم آورد بگویید.
خدمات پشتیبانی
- هر فرایند یا رویه انتقال دانش، ازجمله آموزش، پلتفرمها و… را که در آینده ارائه میدهید، توضیح دهید.
- چه پشتیبانیهایی به تیم توسعه اپلیکیشن ارائه میکنید؟
جزئیات پشتیبانی مشتری
- چهارچوب فرایند پشتیبانی خود را مشخص کنید. سطوح حمایتی که ارائه میکنید شامل چه مواردی است و چه مراحلی باید طی شوند؟
- آیا سیستم افزایش و ردیابی تیکت ارائه میدهید؟
- تیکتهای باز شما چگونه پیگیری و بسته میشوند؟
- چه توافقنامهای برای تعیین سطح خدمات (SLA) را پیشنهاد میدهید؟
اطلاعات قیمتگذاری و مجوزهای موردنیاز برای امنیت اپلیکیشن (Application Security)
- چه شرایط یا ضوابطی با خدمات یا محصول شما ارتباط دارند؟ آیا نمونه قرارداد مجوز نرمافزاری دارید که بتوانیم بررسی کنیم؟
- مدل قیمتگذاری پیشنهادی خود را به وضوح توضیح دهید.
- سایر پیامدهای هزینهای که به این پیشنهاد پیوستشده و نیاز به توجه مشتری دارد را به وضوح بیان کنید.
- آیا خدمات آموزشی یا مشاورهای Pro-Bono ارائه میدهید، آیا هزینههایی را به آنها اختصاص خواهید داد؟ اگر بله، چه هزینههایی باید توسط مشتری پرداخت شوند؟