پایان نامه کارشناسی ارشد در رشته مهندسی کامپیوتر- نرم افزار
عنوان:پیش بینی بهره کشی و خوشه بندی آسیب پذیری ها بوسیله متن کاوی
تعداد صفحات : 111
چکیده:
آسیب پذیریهای نرم افزار میتواند منجر به تلفات مالی و اطلاعاتی شود. به علت محدود بودن منابع مالی و انسانی، اولویت دهی به آسیبها بسیار مورد توجه میباشد. پیش از این پژوهش، تعداد زیادی از محققان آسیب پذیریها را براساس دانشهای تجربی و آماری، رده بندی کردهاند. اماگاهی طبیعت متغییر آسیب پذیریها، فراهم کردن یک معیار رده بندی برای آنها را غیر ممکن میکند.
گزارشهای آسیب پذیری، به طور پیوسته در پایگاه دادههای مختلف ثبت میشوند. اطلاعات متنی آسیب پذیریها، به طور کامل توسط ابزارهای اتوماتیک موجود، مورد استفاده قرار نمیگیرد. این پژوهش نشان داد که از اطلاعات موجود در متنها برای ساخت مدلهای پیش گو میتوان استفاده کرد. متن کاوی ابزاری مناسب برای به دست آوردن اطلاعاتی است که در اخذ تصمیمات مهم مدیریتی موثر میباشند.
در زمینه پیش بینی بهره کشی با استفاده از متن کاوی، تاکنون فقط یک تحقیق انجام شده است. این تحقیق در KDD2010، با عنوان “فراتر از اکتشافی: آموزش برای، کلاس بندی آسیب پذیری و پیش بینی بهره کشی” ارائه شده است. این تحقیق به سوالات زیر، با استفاده از متن کاوی پاسخ داده است: آیا از آسیب پذیری بهره کشی خواهد شد؟ چه زمانی از آسیب پذیری موجود بهره کشی خواهد شد؟ این مقاله در مقایسه با CVSS(که یکی از متریکهای معروف آسیب پذیری است) به نتایج خوبی رسیده است. در این پژوهش به سوالات فوق و به سوالات جدید زیر دقت بالایی پاسخ داده شده است:
اگر سیستمی مورد بهره کشی قرار گرفته، چه زمانی این بهره کشی آغاز شده است؟ (دقت پاسخها بین 94.5-84%)
اگر سیستمی آسیب پذیر است، چه زمانی بسته اصلاح شده آن از سوی سازندگان ارائه خواهد شد؟ (دقت پاسخها بین 91-68%)
در زمینه خوشه بندی آسیب پذیریها، تاکنون تحقیقات زیادی انجام شده است. پایگاه داده OSVDB دارای دسته بندیهای مختلفی برای آسیب پذیریها میباشد، اما هیچ یک از این دستهها بر اساس توصیف آسیب پذیریها نیست. در این تحقیق آسیب پذیریها با استفاده از توصیفهایشان خوشه بندی شدهاند، که دستههای حاصل عبارتند از: سرریز بافر، رد سرویس، دستکاری داده، کنترل از راه دور، پیکربندی نامناسب، شکاف در رمز عبور، دسترسی غیر مجاز به اطلاعات، و دسترسی غیر مجاز به سرویس. برای انتساب آسیب پذیریها به دستههای مناسب به صورت دستی به تجربه نیروی انسانی نیاز است و انجام این کار بسیار ملال آور میباشد. دسته بندی ارائه شده در این پژوهش، امکان ساخت نرم افزاری که بتواند آسیب پذیریها را به طور خودکار به دستههای مناسب نسبت دهد، را فراهم میکند.
در این پژوهش از دو پایگاه داده معروف آسیب پذیریها (OSVDB و CVE)، و اطلاعات تاریخ آسیب پذیریها که استفان فری در اختیارمان قرار داد، استفاده شده است. برای پیش بینی بهره کشی از کلاس بندی کننده های ماشین بردار پشتیبانی و جنگل تصادفی، و برای انجام خوشه بندی از روش نگاشت خود سازمانده نوخاسته استفاده شده است.
فصل اول: مقدمه
1-1- آسیب پذیری
در مباحث امنیت کامپیوتر، یک آسیب پذیری، ضعفی است که برای مهاجم امکان سوء استفاده از اطلاعات یک سیستم را فراهم میکند. سالانه هزاران آسیب پذیری کشف و گزارش میشوند و میلیون ها دلار در سرتاسر دنیا صرف مقابله با آسیب پذیری ها میگردد. برای بهره کشی از آسیب پذیری یک سیستم عموماً به سه عامل نیاز است: حساسیت یا نقصی در سیستم، دسترسی مهاجم به نقص و توانایی مهاجم برای بهره کشی از نقص.
1-1-1- تعریف آسیب پذیری
آسیب پذیری از جمله مفاهیمی است که منابع مختلف تعاریف متفاوتی را برایش ارائه دادهاند. از جمله این تعاریف میتوان به موارد زیر اشاره کرد:
ISO 27005: ضعف یک دارایی یا گروهی از داراییها که میتواند توسط فرد یا گروهی از افراد مورد بهره کشی قرار گیرد . در این تعریف دارایی به معنای هر چیزی که برای سازمان ارزشی داشته باشد، است، برای مثال منابع اطلاعاتی مورد حمایت سازمان.
IETF RFC 2828: یک عیب یا ضعف در طراحی، پیاده سازی، عملکرد یا مدیریت سیستم، که میتواند باعث بهره کشی، در جهت نقض سیاست امنیتی سیستم شود .
کمیته ملی سیستمهای امنیتی ایالات متحده آمریکا، در دستورالعمل CNSSشماره 4009، در تاریخ 26 آوریل 2010، واژه نامه تضمین اطلاعات ملی: آسیب پذیری ضعف در یک IS، روشهای امنیتی سیستم، کنترلهای داخلی یا پیاده سازی است، که میتواند منجر به بهره کشی شود .
ENISA: وجود یک ضعف طراحی یا خطای پیاده سازی که بتواند منجر به رویداد غیر منتظره نامطلوبی شود، که این رویداد امنیت سیستم کامپیوتر، شبکه، برنامه یا پروتکل را به خطر اندازد .
گروه باز: حالتی که قدرت مهاجم بیش از قدرت مقاومت در برابر آن باشد .
تحلیل عاملی از خطر اطلاعات(FAIR): احتمال اینکه یک دارایی قادر به مقاومت در برابر عوامل خطر نباشد .
امنیت داده و کامپیوتر، فرهنگ لغات مفاهیم و لغات استاندارد، نویسندگان دنیس لانگلی و مایکل شین، استاکتون پرس، ISBN 0-935859-17-9:
در امنیت کامپیوتر، ضعف کارکرد امنیتی سیستمهای خودکار شده، کنترلهای ناظران، کنترلهای اینترنت و غیره، که بتوانند بوسیله یک مهاجم با دسترسی غیر مجاز به اطلاعات، پردازش اطلاعات را مختل کنند.
در امنیت کامپیوتر، یک ضعف در لایه فیزیکی، سازمان، کارکرد، کارکنان، مدیریت، سرپرستی، سخت افزار یا نرم افزار که امکان بهره کشی از آنها با هدف آسیب رساندن به سیستم یا فعالیت وجود داشته باشد.
در امنیت کامپیوتر، هر ضعف یا نقص موجود در یک سیستم، حمله، رویداد مضر یا فرصت دسترسی برای یک عامل تهدید کننده، که امکان تهدید را برای عامل فراهم کند، را آسیب پذیری گویند.
2-1-1- کلاس بندی آسیب پذیری ها
آسیب پذیریها، براساس نوع دارایی به دستههای زیر تقسیم میشوند :
سخت افزار، برای مثال: حساسیت به رطوبت، حساسیت به گرد و غبار، استعداد ابتلا به ذخیره سازی محافظت نشده.
نرم افزار، برای مثال: تست ناکافی، فقدان پیگیری.
شبکه، برای مثال: خطوط ارتباطی محافظت نشده، معماری شبکه ناامن.
کارکنان، برای مثال: روند جذب ناکافی، آگاهی های امنیتی ناکافی.
مکان، برای مثال: منطقه مستعد سیل،منبع برق غیر قابل اعتماد.
سازمانی، برای مثال: عدم پیگیری منظم، عدم تداوم برنامه ها.
3-1-1- علتهای ایجاد آسیب پذیریها
برخی از منابع و علت های ایجاد آسیب پذیری ها عبارتند از:
پیچیدگی سیستم: احتمال وجود نقص و نقاط دسترسی ناخواسته در سیستمهای بزرگ پیچیده، بیشتر است .
متعارف بودن سیستم: استفاده از کدها، نرم افزارها، سیستم عاملها یا سخت افزارهای معمول و معروف، احتمال اینکه یک مهاجم بتواند به دانش و ابزار، جهت بهره کشی از نقص موجود دسترسی پیدا کند، را افزایش میدهد .
اتصال: اتصالات فیزیکی، امتیازات، پورتها، پروتکلها و سرویسهای بیشتر و افزایش مدت زمان هر یک از آنها، دسترسی پذیری به آسیب پذیریها را افزایش میدهد .
نقص در مدیریت پسوردها: کاربران کامپیوتر از پسوردهای ضعیفی که با تلاش اندکی کشف میشوند، استفاده میکنند یا اینکه آنها را در برخی برنامهها ذخیره میکنند، و این پسوردها بین بسیاری از برنامه ها و صفحات وب مشترک است .
نقصهای طراحی در سیستم عامل های اصلی: طراحان سیستم عامل ها، عموماً سیاست هایی که کمتر کاربر/مدیر سیستم را درگیر کنند را برمیگزینند. برای مثال سیستم عاملها، سیاست هایی مثل پیش فرضهای اعطای مجوز به هر برنامه و دسترسی کامل کاربران به سیستم را دارند .این نقصهای سیستم عاملها، به ویروسها و بدافزارها، اجازه اجرای دستوراتی از طرف مدیر را میدهد .
مرور وبسایت های اینترنت: برخی وب سایت های اینترنتی دارای جاسوسها یا تبلیغات خطرناکی هستند، که میتوانند به صورت خودکار روی سیستم های کامپیوتری نصب شوند. بعد از بازدید از این وب سایتها سیستم ها آلوده میشوند، اطلاعات شخصی جمع آوری شده و برای شخص ثالث فرستاده می شود .
اشکلات نرم افزاری: اشکلات قابل بهره کشی در بسیاری برنامه های نرم افزاری وجود دارد. اشکلات نرم افزاری ممکن است به مهاجمان اجازه سوء استفاده از برنامه را بدهند .
ورودی های کاربر کنترل نشده: برنامهها فرض میکنندکه همهی ورودیهای کاربر امن است. برنامههایی که ورودی های کاربر را بررسی نمیکنند، در واقع امکان اجرای مستقیم دستورات ناخواسته و دستکاری در پایگاه دادهها را فراهم میکنند .
4-1-1- شناسایی و حذف آسیب پذیریها
تلاش های زیادی در جهت ساخت نرم افزارهایی با قابلیت کشف خودکار آسیب پذیریهای سیستم های کامپیوتری انجام شده است. اگرچه نرم افزارهای موجود میتوانند در برخی موارد دید کلی خوبی را نسبت به آسیب پذیری های سیستم فراهم کنند، اما نمیتوانند جایگزین بررسی انسانی روی آسیب پذیریها شوند. تکیه بر گزارشات اسکنرها، دید محدود همراه با تشخیصهای اشتباه زیاد، به همراه خواهد داشت. آسیب پذیریها در همه ی نرم افزارهای اساسی مثل سیستم عامل ها وجود دارند. گاهی اوقات تنها راه حل اساسی مقابله با آنها نصب بسته نرم افزاری اصلاح شده آن محصول است و در فاصله زمانی کشف تا ارائه بسته نرم افزاری با روش هایی مثل استفاده از دیوار آتش و یا نظارت مستقیم بر کنترلهای دسترسی توسط ناظران سیستم ها، میتوان جلوی سوء استفاده از سیستم را گرفت. لازم به ذکر است که روشهای نظارت مستقیم بر سیستم ها، هم از نظر مالی و هم از نظر نیروی انسانی بسیار هزینه بر هستند.
2-1- مفاهیم اولیه مورد نیاز
1-2-1- متن کاوی
مشکلی که دنیای امروز با آن رو به رو است، کمبود یا نبود اطلاعات نیست بلکه کمبود دانشی است که از این اطلاعات میتوان حاصل کرد. میلیونها صفحه وب، میلیونها کلمه در کتابخانههای دیجیتال و هزاران صفحه اطلاعات در هر شرکت، تنها بخشی از این منابع اطلاعاتی هستند. اما نمیتوان به طور مشخص منبعی از دانش را در این بین معرفی کرد. دانش حاصلی است که از نتیجه گیری و فکر و تحلیل بر روی اطلاعات به دست میآید. هدف داده کاوی مشخص کردن روابط میان داده های موجود در پایگاه دادهها و استخراج دانش از میان آنها میباشد. زمانی که دادههای موجود ساخت یافته باشند استفاده از روشهای داده کاوی و کسب دانش از آنها ساده است. اما امروزه بخش زیادی از اطلاعات به صورت متن نگهداری میشود و متن ها داده هایی غیر ساخت یافته هستند. یک فرد برای دریافت دانش از اطلاعات یک متن، بایستی ابتدا آنرا درک کند، تا بفهمد چه معانی و مفاهیمی در آن موجود است و چه ارتباطی میان مفاهیم وجود دارد. با این حال عصر تکنولوژی به دنبال خودکارسازی است، حتی اگر این کار “درک معنی متن” باشد .
متن کاوی تمام فعالیت هایی که به نوعی به دنبال کسب دانش از متن هستند را شامل میگردد. تحلیل داده های متنی توسط روشهای یادگیری ماشین، بازیابی اطلاعات هوشمند، پردازش زبان طبیعی، همگی در دسته فعالیتهای متن کاوی قرار میگیرند. تصویر 1-1 مراحل متعارف متن کاوی را نشان میدهد. اولین گام در متن کاوی استفاده از روشهایی برای ساختارمند نمودن متنها است. متن از مجموعهای از کلمات و عبارات زبان طبیعی تشکیل شده است. عموماً روشهای متن کاوی ابتدا کلمات و عبارات، را از متن استخراج میکنند و سپس آنها را مورد پردازش قرار میدهند، برای مثال برخی کلمات مثل حروف اضافه و ضمایر حذف، و کلمات باقی مانده ریشه یابی میشوند. سپس مشخصات استخراج شده از متنها به روشهای مختلفی مقداردهی میشوند، از میان این روشها میتوان به مقداردهی دودویی (بیانگر ظاهر شدن/ نشدن کلمه در متن است)، فراوانی کلمه در متن، وزن TF-IDFاشاره کرد .در این تحقیق از روش وزندهی TF-IDFاستفاده شده است، که در قسمت بعد درباره این روش توضیح داده خواهد شد. با استفاده از مقادیر به دست آمده بردارهای ویژگی برای دادهها ساخته و از بین مجموعهی داده ها، داده های آموزش و تست کلاس بندی کننده انتخاب میشوند. پس از آن یک روش کلاس بندی انتخاب میشود. کلاس بندی کننده با استفاده از داده های آموزش، آموزش داده و با استفاده از داده های تست ارزیابی میشود.