محققان و سازمانهای مختلف، تاکنون دسته بندیهای متفاوتی را برای آسيب پذيریها ارائه کردهاند. در اين بخش به معرفی برخی از کارهای انجام شده برای دسته بندی آسيب پذيریها پرداخته میشود.
بيشاپ[1] (در سال 1995) (30) و کرسل[2] (در سال 1998) (31) از پيشگامان کلاس بندی آسيب پذيریهای نرم افزارها هستند. بيشاپ (30) يک طبقه بندی[3] برای آسيب پذيریهای يونيکس ارائه کرد. او شش دسته آسيب پذيری برای نقصهای اساسی گزارش شده در محيط يونيکس ارائه کرد. به طور خلاصه اين دسته بندیها عبارتند از: طبيعت آسيب پذيری، چه زمان آسيب پذيری معرفی شد، چه چيز طی بهره کشی به دست آمد، آسيب پذيری بر چه چيز تاثير دارد، حداقل تعداد اجزای لازم (برای مثال، سخت افزار، شبکه و نرم افزار) برای بهره کشی از آسيب پذيری، و منبع شناسايي آسيب پذيری.
کرسل (1998) (31) يک طبقه بندی برای آسيب پذيریهای نرم افزار با استفاده از درختهای تصميم ارائه کرد. اين درختهای تصميم بيشتر بر اساس مفروضات قياسی[4] که کرسل درباره آسيب پذيریها ساخته بود، میباشد. هدف درختهای تصميم کلاس بندی هر آسيب پذيری در يک دسته آسيب پذيری قياسی مشخص است.
بر اساس کار کرسل يک دسته بندی آسيب پذيری قياسی به دستههايي که به صورت غير تجربی (برای مثال توسط محقق) هستند، اشاره دارد. روشهای ديگر دسته بندی آسيب پذيریها آنهايي هستند که میتوانند از راه استقراء[5] (برای مثال بوسيله نگاه کردن به دادهها به صورت تجربی) تعريف شوند. بيشتر دسته بندیهای آسيب پذيریها، همانند کارهای بيشاپ و کرسل به روشی قياسی تعريف شدهاند.
ونتر[6] و الاف[7] (32) يک مجموعه از 13 دسته بندی آسيب پذيری هماهنگ[8]، که بازه کاملی از آسيب پذيریهای شناخته شده را نشان میدهند، را تعريف کردهاند. دسته بندیها عبارتند از: اشکال در رمزعبور، گردآوری اطلاعات شبکه و سيستم، راههای پنهانی[9]، تروجانها[10] و کنترل از راه دور، دسترسی غير مجاز به اتصالات و سرويسها از راه دور، امتيازات و دسترسیهای کاربر[11]، حقه بازی يا تغير ظاهر[12]، پيکربندی نامناسب[13]، رد سرويس[14] و سرريز بافر، ويروسها و کرمها، سخت افزار معين، نرم افزار معين و بروز رسانیها، و نقض سياست امنيت. دسته بندی آسيب پذيری هماهنگ، با تحليل آسيب پذيریهای امنيتی پيدا شده در کارهای تحقيقاتی پيشين، اسکنرهای آسيب پذيری و اطلاعات اينترنتی، تعريف شدهاند. تخصص انسانی برای تخصيص دستی همهي آسيب پذيریها به دستههای آسيب پذيری هماهنگ معين مورد نياز است. هزاران آسيب پذيری تا کنون شناخته شدهاند، بنابراين پشتيبانی از دسته بندیها به وسيلهی نيروی انسانی، کار بسيار ملال آوری است. مشابه با کار بيشاپ و کرسل، کار ونتر و الاف بر شناسايي مستقيم دستههای آسيب پذيری، بيشتر بر ابزارهای اسکنر آسيب پذيری و کارهای تحقيقاتی پيشين، برای مثال استفاده از يک روش قياسی، مبتنی است.
سيسکو، يک شرکت امنيت شبکه مشهور، آسيب پذيریهای سيستم را به پنج دسته کلاس بندی کرد: خطاهای طراحی، ضعفهای پروتکل، آسيب پذيریهای نرم افزار، پيکر بندی نامناسب، و کدهای خصمانه[15] (33). مايکروسافت، يک مدل خطر STRIDE[16] (34) که شامل شش دسته خطر است، تعريف کرد: حقه شناسايي[17]، دستکاری با داده[18]، انکار[19]، افشاءی اطلاعات، رد سويس، و ترفيع حق ويژه[20].
بسياری از اسکنرهای آسيب پذيری، دسته بندیهای آسيب پذيری خودشان را ارائه کردهاند. برای مثال، SAINT(35) 12 دسته آسيب پذيری را شناسايي کرده است: وب، ايميل، ftp، پوسته[21]، پرينت، RPC، DNS، پايگاه داده، شبکه، ويندوز، رمز عبور، و متفرقه[22]. SFProtect(36) 7 دسته زير را تعريف میکند: گزارشهای کاربر[23]، سياست بازرسی[24]، اتصال سيستم[25]، سيستم فايل[26]، ثبت[27]، سرويسها، و سهام[28]. درحاليکه تحقيق و آموزش شبکه ميزوری[29] (37) 25 دسته آسيب پذيری را شناسايي کرده است.
همانطور که مشخص است هيچ استانداردی برای دسته بندی آسيب پذيریها وجود ندارد، بعلاوه نام گذاری دستهها نيز به شکل مشخصی متفاوت است. تحقيقات پيشين و اسکنرهای آسيب پذيریها تناقضهايي را در دسته بندیهای مختلف آسيب پذيریها نيز نشان میدهد. با وجود اين تفاوتها، تقريباً نگاشت مستقيم يک دسته بندی به دسته بندی ديگر غير ممکن است، برای مثال نگاشت دسته بندی آسيب پذيریهای بيشاپ به دسته بندی آسيب پذيریهای هماهنگ تعريف شده توسط ونتر و الاف. اين مسئله نويسندگان مقاله (38) را به ارائه يک دسته بندی آسيب پذيری استاندارد، راهنمايي کرد. دادههای مورد استفاده در (38) گزارشات آسيب پذيری CVEاست و از SOMبرای خوشه بندی آسيب پذيریها استفاده شده است. در فاز آموزش با استفاده از ليست ثبت شدهی[30]CVEخوشه بندی انجام میشود و در فاز نگاشت الگو[31] آسيب پذيریهای جديد که همان گزارشات کانديدای[32]CVEهستند، کلاس بندی میشوند.
بردارهای ويژگی مورد استفاده در (38) از توصيف آسيب پذيریهای نوع ثبت شدهCVEاستخراج شدهاند. مراحل ساخت بردار مشخصات عبارتند از: استخراج لغات، حذف کلمات ناچيز[33] و نشان گذاریها[34] و حذف کلمات بیمعنا[35] که موجب سادهتر شدن فرآيند آموزش و پيش گيری از خوشه بندی پيرامون اين کلمات میشود. قوانين زير برای حذف کلمات استفاده شده است: 1) حذف حروف اضافه، 2) حذف صفت، قيد و فعلها، 3) حذف همه کلمات يک کاراکتری، 4) حذف همهی اعداد مربوط به نسخه نرم افزاری، 5) حذف همهی کلماتی که کمتر از يک تعداد مشخص (10 بار) در کل گزارشات آسيب پذيریهای نوع ثبت شده، رخ دادهاند. طول بردار ويژگیها 394 است و مقادير هر ويژگی تعداد تکرار کلمه در توصيف آسيب پذيری را نشان میدهد. پس از ساخت بردارهای ويژگی، خوشه بندی با روش SOMانجام شده است. پس از آن عمل برچسب زنی به خوشهها با نظارت نيروی انسانی انجام شده است. در نهايت 7 دسته زير برای آسيب پذيریها معرفی شده است: سرريز بافر[36]، رد سرويس[37]، مستند شدن متاکاراکترها[38]، افزايش امتيازات[39]، تحريف داده[40]، جمع آوری داده[41]، آسيب پذيریهای پيکربندی. در اين تحقيق يک تحليلگر و اسکنر آسيب پذيری، با استفاده از دسته بندیهای به دست آمده، نيز ارائه شده است.
بسياری از دسته بندیهايي که تاکنون برای آسيب پذيریها ارائه شده است، از جمله دستههای مقاله (38) دارای مسئله همپوشانی هستند ، يعنی احتمال اينکه يک آسيب پذيری به طور همزمان در بيش از يک دسته طبقه بندی شود وجود دارد. در مقاله (39)، برای حل مسئله همپوشانی دستهها در آسيب پذيری نرم افزار، يک روش دسته بندی آسيب پذيری بر اساس خوشه بندی متن در NVDارائه شده است و “انديس همپوشانی خوشه[42]” برای ارزيابی الگوريتمهای خوشه بندی k-ميانگين ساده[43]، k-ميانگين دوبخشی[44] و SOMدسته[45] استفاده شده است. 45 خوشه آسيب پذيری اصلی از تقريباً 40000 آسيب پذيری ثبت شده بر اساس “انديس سلطه توصيف کننده[46]” انتخاب شدند.
بردار ويژگی تحقيق (39) مجموعه کلمات توصيف آسيب پذيریها است که به علت زياد بودن تعداد آنها فقط کلمات با تعداد تکرار بالا انتخاب شدند و مقادير اين ويژگیها عدد TF-IDFاست. بسياری از جزئيات ساخت بردار ويژگی در اين مقاله، همانند مقدار آستانه برای تکرار کلمات و طول بردار ويژگیها ذکر نشده است. پس از آن سه الگوريتم خوشه بندی k-ميانگين ساده، k-ميانگين دوبخشی و SOMدسته، به بردارهای ويژگی به دست آمده اعمال شدند.
به طور کلی يک خوشه بندی مناسب دارای دو ويژگی بايد باشد، اول شباهت دادههای هر دسته به يک ديگر و دوم متفاوت بودن دادههای دستههای مختلف باهم. در مقاله (39) يک معيار ارزيابی خوشه بندی جديد به نام “انديسهای همپوشانی[47]“، ارائه شده است، که عبارت است از:
OverlapIndex[k]=Maxj≠k ((Ej+Ek)/║Vj-Vk║)
در اين فرمول Ejو Ek:
Ek = MeanIntraCentroid[k]
Ej = MeanIntraCentroid[j]
که MeanIntraCentroidعبارت است از:
MeanIntraCentroid[k]= ( )/│Ck│
C: کل تعداد کلاسها، |Ck| اندازه کلاستر kو Vkمرکز ثقل کلاستر kاست.
اگر OIکمتر از يک باشد، کلاسترها از يکديگر جدا هستند؛ اگر برابر با يک باشد، بر يکديگر مماسند؛ اگر بزرگتر از يک باشد، با يکديگر همپوشانی دارند اين متريک برای ارزيابی نتايج سه الگوريتم خوشه بندی، که هريک از آنها 100 خوشه را استخراج کرده بودند، مورد استفاده قرار گرفت و از ميان آنها k-ميانگين ساده کمترين مقدار OIرا داشت.
در مقاله (39)، درحالی که با استفاده از OIکيفيت خوشه بندی سنجيده شد، با استفاده از چندين انديس کيفيت خوشه، اهميت خوشهها بررسی شد. اين انديسهای کيفيت خوشه عبارتند از: سلطه توصيف کننده[48]، پوشش توصيف کننده حوزه[49]، اندازه خوشه وابسته[50]، چگالی توصيف کننده[51] و انديس کيفيت خوشه.
در اين مقاله در نهايت 45 خوشه اصلی از 100 خوشه اوليه، معرفی شد که آنها را میتوان به 4 دسته کلی زير تقسيم کرد: خطاهای دستکاره کاراکتر خاص[52]، نقصهای منطقی برنامه[53]، خطاهای پيکربندی[54]، و ديگر آسيب پذيریهای کلی[55].
[1] Bishop
[2] Krsul
[3] Taxonomy
[4] Priori assumptions
[5] Posteriori
[6] Venter
[7] Eloff
[8] Harmonized
[9] Backdoors
[10] Trojans
[11] Privilege and user escalation
[12] Spoofing or masquerading
[13] Misconfiguration
[14] Denial of service (DoS)
[15] Hostile
[16] STRIDE Threat Model
[17] Spoofing identity
[18] Tampering with data
[19] Repudiation
[20] Elevation of privilege
[21] Shell
[22] Miscellaneous
[23] User accounts
[24] Audit policy
[25] System logon
[26] File system
[27] Registry
[28] Shares
[29] Missouri Research & Education Network
[30] Entry
[31] Pattern-mapping
[32] Candidate
[33] Insignificant
[34] Punctuation
[35] Meaningless
[36] Buffer overflow
[37] Denial of Service
[38] Scripting metacharacters
[39] Privilege escalation
[40] Data corruption
[41] Information gathering
[42] Cluster Overlap Index
[43] SimpleKMeans
[44] BisectingKMeans
[45] BatchSOM
[46] Descriptor Dominance Index
[47] Overlap Indices
[48] Descriptor dominance
[49] Domain descriptor coverage
[50] Relative cluster size
[51] Descriptor density
[52] The special character handling defects
[53] Program logic flaws
[54] Configuration defects
[55] Other unspecified vulnerabilities