امنیت نرم افزار

  • ایمن سازی نرم افزار با بهره گیری از Misuse Case و Threat Modeling

    هکرها و نفوذ گران غیر قانونی با استفاده از روشهای مختلف انواع آسیب پذیری ها در نرم افزارها را پیدا کرده و در تلاش خواهند بود که به سیستم های مختلف نفوذ و امنیت و اطلاعات حیاتی این سامانه ها را مورد سو استفاده قرار دهند، بنابراین بهره گیری از موثرترین روشهای ایمن سازی این سامانه ها برای حفظ امنیت و پایداری آنها الزامی است.

    مشکلات و حملات امنیتی که  نرم افزارها و سامانه های مختلف را درگیر میکنند غالبا به دلیل نقص هایی است که در طراحی و توسعه اولیه نرم افزارها رخ میدهند. متاسفانه این نقص های امنیتی سطح پایین و غالبا ابتدایی امکان سو استفاده وسیع توسط هکرها و نفوذ گران را فراهم مینمایند. حملاتی مانند حمله تزریق به پایگاه داده SQL Injection، آسیب پذیری های XSS و حمله سرریز بافر Buffer Overflow که سالهاست در صدر لیست ده حمله برتر OWASP قرار دارند و با روشهایی همچون صحت سنجی ورودی ها Input Validation قابل پیشگیری هستند، غالبا با سو استفاده از این دسته ایرادات امنیتی رخ میدهند.

    طراحی صحیح نرم افزارها و قراردادن نرم افزارهای طراحی شده تحت آزمایشهای امنیتی مختلف قبل از انتشار عمومی میتواند تا حد زیادی امنیت این نرم افزارها را در مقابل تهدیدات امنیتی تامین کند.

    از متداول ترین روشهای ایمن سازی در بین توسعه دهندگان نرم افزارهای مختلف، ایمن سازی چرخه توسعه نرم افزارها (SDLC) و شبیه سازی خطرات یا Threat Modeling هستند که دستورالعمل اجرایی این دو روش بر این قاعده استوار است که برنامه نویسان در سطوح مختلف باید از قواعد کد نویسی امن مطلع بوده و با استفاده از این روشها در مراحل مختلف توسعه نرم افزار احتمال سو استفاده های امنیتی را کاهش دهند. با این حال استفاده از این روشها و کد نویسی امن به تنهایی نمیتواند امنیت نرم افزارها را در مقابل تهدیدات امنیتی مختلف تضمین نماید و بهره گیری از دیگر روشهای ایمن سازی باید در دستور کار قرار گیرد.

    از دیگر روشهای نه چندان جدید ولی بسیار کاربردی استفاده از خروجی ها و نتایج تست های Misuse Case که بر پایه مدل Use Case که در بخش های مختلف توسعه نرم افزار طراحی شده است. در ساده ترین تعریف این دو مدل نحوه و امکان بهره گیری سیستم از قابلیت های پیش فرض طراحی شده در بخش های مختلف نرم افزار را Use Case و در طرف مقابل روشهای احتمالی سو استفاده از قابلیت های توسعه داده شده به منظور آسیب رساندن به امنیت و یکپارچگی نرم افزار توسط هکرها را به عنوان Misuse Case معرفی میکنند.

    در تست های Misuse Case برنامه نویس یا متخصص آنالیز نرم افزار تلاش خواهد کرد که از نگاه یک هکر امنیت و پایداری قابلیت های مختلف نرم افزار مورد نظر را در معرض انواع حملات و تهدیدات امنیتی احتمالی قرار دهد.

    در این مدل نرم افزار در حال توسعه با توجه به نوع و کاربرد آن باید حداقل تحت تست ها و حملاتی همچون منع سرویس (DoS)، تزریق پایگاه داده (SQL Injection)، بروت فورس (Brute Force)، سرریز بافر (Buffer Overflow) و بالا بردن سطح دسترسی (Escalation of Privileges) قرار گیرد.

    طراحی و اجرای Misuse Case مختلف بر روی بخش ها و قابلیتهای مختلف نرم افزار در حال توسعه غالبا کشف نقص های امنیتی مختلف را به دنبال خواهد داشت که این نقص های فنی و امنیتی بدست آمده ایجاد Use Case جدید و اصلاح قابلیت های فعلی و افزودن قابلیتهای امنیتی جدید در صورت نیاز برای جلوگیری و انسداد نقص های امنیتی کشف شده را در پی خواهد داشت. طراحی و اجرای دقیق تست های Misuse Case در کنار امکان کشف و ضبط نقص های امنیتی و راه های مقابله با آنها، امکان ایجاد تغییرات ساختاری در معماری کلی نرم افزار در جهت ایمن سازی را نیز به توسعه دهنده خواهد داد.

    دو مدل معرفی شده Threat Modeling و Misuse Case در کنار اشتراکات متعدد، در نحوه تعامل با بخش های توسعه ای نرم افزار تفاوتهای محسوسی با هم دارند. شاخص ترین آنها در نحوه تعامل با ساختار کلی و اجزای نرم افزار است، به نحوی که در شبیه سازی خطرات یا Threat Modeling تمرکز اصلی بر روی معماری و ساختار کلی نرم افزار و در مدل Misuse Case امکانات و قابلیتهای مختلف نرم افزار در حال توسعه به صورت جداگانه و دقیق مورد توجه و تست قرار میگیرند.

    در پایان این مطلب ذکر این نکته ضروری است که برای رسیدن به بهترین نتیجه ممکن و بهره گیری از مزایای ایمن سازی این دو مدل، توسعه دهندگان باید همکاری نزدیکی با متخصصین تست و آنالیز و دیگر اعضای تیم داشته باشند. از این جهت بهره گیری از جدیدترین و موثرترین روشهای جمع آوری اطلاعات از اعضای مختلف تیم در تمام بخش ها کاملا ضروری خواهد بود. برین استورمینگ Brain Storming از موثرترین و جدیدترین روشهای گردآوری اطلاعات از تمام اعضای مشارکت کننده در توسعه نرم افزار است. در این روش معمولا اعضای تیم در بخش های مختلف گرد آمده و ایده ها و نظرات خود را در مورد خطرات احتمالی و نحوه ایمن سازی نرم افزار مورد نظر را بدون محدودیت ارائه میدهند.

    خروجی این جلسات و اطلاعات دقیق از بخش های توسعه داده شده نرم افزار که در اختیار بخش برنامه نویسی قرار دارد در کنار دانش متخصصین آنالیز و بهره گیری از موثرترین مدلهای ایمن سازی میتواند موجب توسعه نرم افزاری ایمن و پایدار گردد.

     

دکمه بازگشت به بالا
بستن