تکنیک های ارزیابی امنیتی نرم افزار
۱۳۹۹/۰۸/۰۴
تکنیک های ارزیابی امنیتی نرم افزار
آزمون نفوذ نرمافزار چیست؟
آزمون نفوذ به فرایندی گفته میشود که در آن تیم نفوذ با بررسی دقیق برنامههای کاربردی در زمینههای مختلف همچون ضعف طراحی، مشکلات فنی، ضعف ارتباطات صحیح و غیره پرداخته و آسیبپذیریهای موجود را مورد بررسی قرار میدهد.
آزمون امنیت کارکردی و آزمون آسیبپذیریهای امنیتی یا غیرکارکردی
در آزمون امنیت کارکردی، نیازمندیهای امنیتی مورد بررسی قرار میگیرند و آزمون امنیت بررسی میکند که آیا کارکردهای امنیتی نرمافزار بهدرستی و مطابق با نیازمندیهای امنیتی پیادهسازی شدهاند. تست آسیبپذیریهای امنیتی به نیازمندیهای امنیتی منفی یا به عبارتی بررسی لیست کارهایی که سیستم قادر به انجام آن نیست و در نتیجه منجر به یک حادثه میشود میپردازد. در تست و ارزیابی امنیتی سطح اطلاعات در دسترس در نحوه انجام تست مؤثر است.
سطح اطلاعات در دسترس:
بر اساس اطلاعاتی که برای آزمون در اختیار قرار میگیرد، در حوزه طراحی، پیادهسازی و تست نرمافزار و آزمون نفوذ را میتوان به دو دستهی جعبه سفید، جعبه سیاه دستهبندی نمود.
- آزمون جعبه-سفید (White-Box Testing): آزمون جعبه سفید تیم نفوذ قادر هستند با تجزیهوتحلیل کدها تمام مسیرهای پنهانی برنامه را پیدا نمایند این امر باعث پیدا شدن آسیبپذیریها و خطاهای منطقی موجود در مسیرهای برنامهی هدف میشود.
- آزمون جعبه-سیاه (Black-Box Testing): برخلاف آزمون جعبه سفید در آزمون جعبه سیاه، فرض میشود که هیچ دانشی از سورس، نحوه طراحی و پیادهسازی و معماری نرمافزار، در اختیار نیست. در این آزمون ابتدا در بخش برنامههای کاربردی، قسمتهای مختلف را برای پیدا کردن، تمام راههای تزریق ممکن بررسی کرده و هر طریقی که حملهکننده بتواند به برنامهی کاربردی دسترسی پیدا کند، مورد آزمایش قرار میگیرد. بعد از شناسایی ضعفهای امنیتی، روشهایی برای نفوذ به آسیبپذیریها داده میشود.
روشهای انجام تست جعبه سیاه نرمافزار
- انجام تست بر روی تمام واسطهای بیرونی و قابل مشاهده عموم برای استفاده از برنامه مانند Public Classها
- تست کارایی با ارسال حجم بالای داده که شامل دو بخش Stress Testing و Load Testing است
- تست امنیتی با کمک شبیهسازی محیط واقعی حمله برای برنامه.
- استفاده از تکنیکهای مهندسی معکوس
تکنیکهای ارزیابی امنیتی نرمافزار
- بررسی کد:
بررسی کد به منظور ارزیابی شناسایی دقیق آسیبپذیریها انجام میشود. در ارزیابی کد برنامه میتوان به تمامیت، دقت و صحت نتایج اطمینان داشت.
- تحلیل خودکار و ایستا:
در تحلیل ایستا هدف اصلی کشف عیب و نقصهای امنیتی و شناسایی راهحلهای بالقوه آنها است .با خروجی ابزار تحلیل ایستا باید اطلاعات تفصیلی کافی درباره نقاط شکست احتمالی نرمافزار به دست آید تا تهیهکننده نرمافزار بتواند آسیبپذیریهای نرمافزار را براساس سطح خطری که برای سیستم ایجاد میکنند طبقهبندی و اولویتبندی نماید.
- تحلیل کد دودویی:
بررسی کد دودویی با کمک تکنیکهای مهندسی معکوس انجام میشود.
- تست فازی:
در تست فازی دادههای تصادفی نامعتبر از طریق محیط نرمافزار یا از راه مؤلفه نرمافزاری دیگر وارد نرمافزار میشود. فازینگ به معنی تولیدکننده کاراکتر تصادفی برای تست برنامههای کاربردی از طریق تزریق دادههای تصادفی در محل واسطهای این برنامهها میباشد.
- تحلیل ریسک:
برای بررسی نیازهای امنیتی و به منظور شناسایی ریسکهای امنیتی، تحلیل ریسک در طول مرحله طراحی نرمافزار انجام میشود. مدلسازی تهدید، فرآیندی است که برای شناسایی تهدیداتی که نرمافزار با آنها مواجه خواهد بود و آسیبپذیریهایی که نرمافزار را تهدید میکنند، استفاده میشود.
- اسکن (پویش) آسیبپذیری:
این ابزار، اجرای نرمافزار برنامه کاربردی را اسکن (پویش) میکنند تا الگوهای شناخته شدهای از ورودیها و خروجیها را پیدا کنند که با آسیبپذیریهای شناخته شده مرتبط هستند.
- تست نفوذ:
تست برنامه کاربردی در حال اجرا در محیط زنده آن برای یافتن آسیبپذیریهای امنیتی انجام میشود .در تست نفوذ نتیجهگیری میشود که آیا سیستم با موفقیت در برابر حملات مقاومت مینماید و اینکه اگر نتواند در برابر حملهای مقاومت کند چگونه رفتار خواهد نمود.
استانداردهای انجام آزمون نفوذ نرمافزار
۱- استاندارد Institude of Standard and Technology National
از استاندارد NIST بهعنوان یک راهنما برای جنبههای فنی در ارزیابیهای امنیت اطلاعات، تکنیکهای آزمون و بررسی فنی استفاده میگردد.
۲- استاندارد OWASP ASVS
تست امنیتی نرمافزار براساس استاندارد OWASP ASVS نسخه ۳٫۰٫۱ در سطوح امنیتی مختلف قابل انجام است.
- سطح یک
سطح ۱ معمولاً برای نرمافزارهایی مناسب است که در آنها اطمینان کمتری نسبت به نظارتهای امنیتی صحیح مورد نیاز است و یا برای تأمین یک آنالیز سریع بر روی نرمافزارهای سازمانی و همچنین برای کمک به ایجاد یک لیست اولویتبندی شده برای نیازمندیهای امنیتی به عنوان بخشی از یک پروژه چند فاز استفاده میشود.
- سطح دو
سطح ۲، اطمینان میدهد که مکانیزمهای امنیتی درستی بکار گرفته شده، این مکانیزمها مؤثر بوده و همچنین در داخل نرمافزار به درستی تعبیه شدهاند.
- سطح سه
سطح ۳، بالاترین سطح امنیتی در استاندارد ASVS است. این سطح معمولاً منحصر به نرمافزارهایی است که نیازمند سطوح قابل توجهی از تاییدات امنیتی هستند. سازمانها برای نرمافزارهایی که وظیفه اجرای امور حیاتی را دارند و ایجاد مشکل در آنها میتواند تأثیر بسزایی در عملکرد و یا حتی بقای سازمان داشته باشد، نیازمند استاندارد سطح ۳ هستند.
ارزیابی نفوذپذیری برروی برنامههای کاربردی تحت وب، ویندوز و موبایل با هر زبانی توسط متخصصین تست نفوذ شرکت امنافزار گستر آپادانا در حال انجام و نتایج موفقیت آمیز و موثر بر امنیت برنامههای کاربردی میباشد. برای مثال میتوان به بررسی برنامههای تحت ویندوز با زبانهای شیگرا مانند C# و Java و زبانهای دودویی و کرنل مانند C++ و delphi، تست جعبه سفید Asp.net و php و آنالیز پایداری امنیتی بانکهای اطلاعاتی مختلف اشاره نمود و در حوزه اپلیکیشنهای موبایل نیز هر دو گونه Android و IOS برروی Java، Swift، Android Native ، Flutter، React Native و ... بررسی صورت میپذیرد که هم به صورت جعبه سیاه و هم به صورت جعبه سفید در حال کارشناسی و تحلیل و آنالیز میباشد. متخصصین ما همچنین در تحلیل و آنالیز بهبود بهره وری بانک اطلاعاتی و انتخاب الگوریتم و تکنولوژی مناسب رمزنگاری نیز در کنار شما هستند.
نویسنده: بهاره جلائی یزدنژاد
مقالات مرتبط
اشتراک در :