CWE Top 25

CWE Top 25: خطرناک‌ترین ضعف‌های نرم‌افزاری سال ۲۰۲۱ میلادی

مقاله زیر ترجمه مقاله‌ای از سایت CWE موسسه MITRE است (به آدرس در زیر داده‌شده) و طی آن ۲۵ عدد از خطرناک‌ترین ضعف‌های نرم‌افزاری، با توجه به ضوابط مطرح‌شده، معرفی شده‌اند:

https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html

در این مقاله، پس از معرفی مختصر آن ۲۵ ضعف نرم‌افزاری، و معرفی ضعف‌های در آستانه، متدولوژی مورداستفاده برای استخراج این لیست، و همچنین نقد و محدودیت‌های آن بحث شده است.

۱- مقدمه

لیست CWE TOP 25، یا لیست سال ۲۰۲۱ میلادیِ سیستمِ طبقه‌بندی سرشماری ضعف‌های رایج(۱) (CWE) در ارتباط با ۲۵ مورد از خطرناک‌ترین ضعف‌های نرم‌افزاری، یک لیست ارائه‌دهنده‌ی(۲) از رایج‌ترین و تأثیرگذارترین مسائل می‌باشد، که در طی دو سال گذشته تجربه شده است. این نقاط ضعف خطرناک هستند زیرا اغلب به‌راحتی می‌توان آن‌ها را پیدا کرد، از آن‌ها بهره‌برداری کرد و می‌تواند به دشمنان اجازه دهد تا یک سیستم را به‌طور کامل در اختیار گیرند، داده‌ها را سرقت کنند یا از کارکرد یک برنامه جلوگیری کنند. لیست CWE Top 25 یک منبع ارزشمند برای جامعه است که می‌تواند به توسعه‌دهندگان، آزمایش‌کنندگان و کاربران و همچنین مدیران پروژه، محققان امنیتی و مربیان کمک کند تا نسبت به جدی‌ترین و به‌روزترین ضعف‌های امنیتی بصیرت داشته باشند.

برای ایجاد لیست ۲۰۲۱، تیم CWE از داده‌های آسیب‌پذیری‌ها و نقاط در معرض(۳) رایج (CVE®) موجود در موسسه‌ی ملی استانداردها و تکنولوژی (NIST)، پایگاه ملی آسیب‌پذیری(NVD)  و همچنین سیستم نمره‌گذاری آسیب‌پذیری رایج  (CVSS)مربوط به هر رکورد  CVEاستفاده کرد. یک فرمول برای داده‌ها برای نمره‌گذاری هر ضعف بر اساس شیوع(۴) و شدت استفاده شد.

در زیر لیست مختصری از نقاط ضعف در CWE Top 25 سال ۲۰۲۱ ازجمله نمره‌ی کلی هر یک آمده است:

رتبه شناسه نام امتیاز تغییر نسبت به ۲۰۲۰
[۱] CWE-787 نوشتن خارج از محدوده(۵) ۶۵/۹۳ ۱+
[۲] CWE-79 خنثی‌سازی(۶) نادرست ورودی در حین تولید صفحه وب (“Cross-site Scripting”) ۴۶/۸۴ ۱-
[۳] CWE-125 خواندن خارج از محدوده ۲۴/۹ ۱+
[۴] CWE-20 تحقیق اعتبار(۷) ورودی نامناسب ۲۰/۴۷ ۱-
[۵] CWE-78 خنثی‌سازی نادرست عناصر ویژه مورداستفاده در یک فرمان سیستم‌عامل (“تزریق(۸) فرمان OS”) ۱۹/۵۵ ۵+
[۶] CWE-89 خنثی‌سازی نادرست عناصر ویژه مورداستفاده در یک فرمان SQL (“تزریق SQL”) ۱۹/۵۴ ۰
[۷] CWE-416 Use After Free ۱۶/۸۳ ۱+
[۸] CWE-22 محدودیت نامناسب نام مسیر به یک دایرکتوری محدود (“پیمایش مسیر(۹)“) ۱۴/۶۹ ۴+
[۹] CWE-352 جعل درخواست متقابل سایت(۱۰) (CSRF) ۱۴/۴۶ ۰
[۱۰] CWE-434 بارگذاری نامحدود فایل با نوع خطرناک ۸/۴۵ ۵+
[۱۱] CWE-306 عدم تصدیق هویت برای تابع حیاتی ۷/۹۳ ۱۳+
[۱۲] CWE-190 سرریز عدد صحیح(۱۱) یا Wraparound ۷/۱۲ ۱-
[۱۳] CWE-502 توالی برداری(۱۲) داده‌های غیرقابل‌اعتماد ۶/۷۱ ۸+
[۱۴] CWE-287 تصدیق هویت نامناسب ۶/۵۸ ۰
[۱۵] CWE-476 ارجاع مجدد(۱۳) اشاره‌گر NULL ۶/۵۴ ۲-
[۱۶] CWE-798 استفاده از گواهی‌‌نامه‌های Hard-coded ۶/۲۷ ۴+
[۱۷] CWE-119 محدودیت نادرست عملیات در محدوده بافر حافظه ۵/۸۴ ۱۲-
[۱۸] CWE-862 عدم مجوزدهی(۱۴) ۵/۴۷ ۷+
[۱۹] CWE-276 مجوزهای پیش‌فرض نادرست ۵/۰۹ ۲۲+
[۲۰] CWE-200 افشا شدن اطلاعات حساس در برابر یک مهاجم غیرمجاز ۴/۷۴ ۱۳-
[۲۱] CWE-522 اعتبارنامه‌های(۱۵) محافظت‌شده‎ی ناکافی ۴/۲۱ ۳-
[۲۲] CWE-732 تخصیص مجوز نادرست برای منابع حیاتی ۴/۲ ۶-
[۲۳] CWE-611 محدودیت نامناسب مرجع نهاد خارجی(۱۶) XML ۴/۰۲ ۴-
[۲۴] CWE-918 جعل درخواست سمت سرور (SSRF) ۳/۷۸ ۳+
[۲۵] CWE-77 خنثی‌سازی نادرست عناصر ویژه‌ی مورداستفاده در یک فرمان (“تزریق فرمان”) ۳/۵۸ ۶+

۲- تجزیه‌وتحلیل و نکات

تفاوت عمده بین لیست‌های CWE Top 25 در ۲۰۲۰ و ۲۰۲۱، ادامه‌ی تبدیل‌شدن ضعف‌ها به ضعف‌های خاص‌تر در مقابل ضعف‌های کلی‌تر(۱۷) و در سطح طبقه (class-level) است. برآورد اولیه نشان می‌دهد که درصد CWE های سطح پایه از ۶۰ به ۷۱ درصد از کل ۲۵ مدخل‌های برتر و درصد CWE های class-level از ۳۰ به ۲۰ درصد از مدخل‌ها کاهش‌یافته است. سایر سطوح ضعف‌ها (به‌عنوان‌مثال طبقه‌بندی، ترکیب و نوع(۱۸)) نسبتاً بدون تغییر  باقی می‌ماند.

درحالی‌که چند ضعف class-level هنوز در لیست وجود دارد، آن‌ها به دلیل تأثیرگذاری بر اولویت‌بندی در کار نگاشت مجدد(۱۹)، در رتبه‌بندی به میزان قابل‌توجهی کاهش‌یافته‌اند (به بخش نگاشت مجدد در زیر مراجعه کنید). انتظار می‌رود این روند حرکت در سال‌های آینده ادامه یابد، زیرا جامعه نگاشت‌های(۲۰) خود را به ضعف‌های دقیق‌تر بهبود می‌بخشد.

با کاهش نسبی ضعف‌های class-level در حقیقت CWE های خاص بیشتری به‌جای این کلاس‌های سطح بالا حرکت کرده‌اند، مانند CWE-78 (خنثی‌سازی نادرست عناصر ویژه مورداستفاده در یک فرمان سیستم‌عامل (“تزریق فرمان OS”))، CWE-22 (محدودیت نامناسب نام مسیر به یک دایرکتوری محدود (“پیمایش مسیر”))، CWE-434 (بارگذاری نامحدود فایل با نوع خطرناک)، CWE-306 (عدم تصدیق هویت برای تابع حیاتی)، CWE-502 (توالی برداری داده‌های غیرقابل‌اعتماد)، CWE-862 (عدم مجوزدهی) و CWE-276 (مجوزهای پیش‌فرض نادرست). روند حرکت بعدی در آینده برای کاربرانی که در تلاش برای درک مسائل واقعی هستند که سیستم‌های امروزی را تهدید می‌کند بسیار مفید خواهد بود، زیرا تیم Top 25 معتقدند که ضعف‌های سطح پایه برای ذینفعان آموزنده‌تر از ضعف‌های Class-level هستند.

بزرگ‌ترین حرکت‌های به سمت بالا در لیست مذکور به شرح زیر است:

  • CWE-276 (مجوزهای پیش‌فرض نادرست): از شماره ۴۱ به ۱۹
  • CWE-306 (عدم تصدیق هویت برای تابع حیاتی): از شماره ۲۴ به ۱۱
  • CWE-502 (توالی برداری داده‌های غیرقابل‌اعتماد): از شماره ۲۱ به ۱۳
  • CWE-862 (عدم مجوزدهی): از شماره ۲۵ به ۱۸
  • CWE-77 (خنثی‌سازی نادرست عناصر ویژه مورداستفاده در یک فرمان (“تزریق فرمان”)): از شماره ۳۱ به ۲۵

اکثر این نقاط ضعف نشان‌دهنده‌ی برخی از دشوارترین زمینه‌ها برای تجزیه‌وتحلیل سیستم است. یک نظریه در مورد این روند حرکت این است که جامعه آموزش، ابزار و تجزیه‌وتحلیل خود را در ارتباط با برخی از ضعف‌های خاصِ پیاده‌سازی که در نسخه‌های قبلی CWE Top 25 مشخص شده بودند، بهبود بخشیده و وقوع آن‌ها را کاهش داده است. این امر رتبه‌ی آن‌ها را پایین می‌آورد و به‌نوبه‌ی خود رتبه این ضعف‌های دشوار را افزایش می‌دهد.

پنج مورد از بزرگ‌ترین حرکت‌های نزولی در لیست عبارت‌اند از:

  • CWE-200 (افشا شدن اطلاعات حساس در برابر یک مهاجم غیرمجاز): از شماره ۷ به ۲۰
  • CWE-119 (محدودیت نادرست عملیات در محدوده‌ی بافر حافظه): از شماره ۵ به ۱۷
  • CWE-94 (کنترل نادرست تولید کد (“تزریق کد”)): از شماره ۱۷ به ۲۸
  • CWE-269 (مدیریت نامناسب سطح دسترسی(۲۱)): از شماره ۲۲ به ۲۹
  • CWE-732 (تخصیص مجوز نادرست برای منابع حیاتی): از شماره ۱۶ به ۲۲

موارد جدید در Top 25 عبارت‌اند از:

  • CWE-276 (مجوزهای پیش‌فرض نادرست): از شماره ۴۱ به ۱۹
  • CWE-918 (جعل درخواست سمت سرور (SSRF)): از شماره ۲۷ به ۲۴
  • CWE-77 (خنثی‌سازی نادرست عناصر ویژه مورداستفاده در یک فرمان (“تزریق فرمان”)): از شماره ۳۱ به ۲۵

مواردی که از Top 25 خارج شدند عبارت‌اند از:

  • CWE-400 (مصرف(۲۲) منابع کنترل نشده): از شماره ۲۳ به ۲۷
  • CWE-94 (کنترل نادرست تولید کد (“تزریق کد”)): از شماره ۱۷ به ۲۸
  • CWE-269 (مدیریت نامناسب سطح دسترسی): از شماره ۲۲ به ۲۹

کسانی که به علت وقوع این تغییرات علاقه‌مند هستند، می‌توانند به بخش نگاشت مجدد مراجعه کنند تا مطلع شوند که اولویت‌بندی فعالیت‌های بازنگری چگونه می‌تواند بر رتبه‌بندی تأثیر بگذارد.

۳- متدولوژی

CWE Top 25 در سال ۲۰۲۱ با داشتن اطلاعات آسیب‌پذیری‌های منتشرشده توسط NVD ایجاد شده است. خود NVD داده‌های آسیب‌پذیری را از CVE دریافت می‌کند و سپس آن را با تجزیه‌وتحلیل و اطلاعات اضافی تکمیل می‌کند، ازجمله نگاشت به یک یا چند نقطه‌ی ضعف، و نمره CVSS که این نمره یک مقدار عددی و نشان‌دهنده‌ی شدت بالقوه‌ی آسیب‌پذیری بر اساس مجموعه‌ای از ویژگی‌های استاندارد در مورد آسیب‌پذیری است. NVD این اطلاعات را به‌صورت قابل‌درک(۲۳) ارائه می‌دهد که برای یک رویکرد داده محور(۲۴) در ایجاد CWE Top 25 در سال ۲۰۲۱ استفاده می‌شود. این رویکرد نگاهی عینی به آسیب‌پذیری‌هایی که در حال حاضر در دنیای واقعی مشاهده می‌شود، ارائه می‌دهد و بنیانی از دقت تحلیلی(۲۵) مبتنی بر آسیب‌پذیری‌های به‌طور عمومی منتشرشده به‌جای نظرسنجی‌ها و نظرات شخصی ایجاد می‌کند و این روند را به‌راحتی قابل تکرار می‌سازد.

CWE Top 25 در سال ۲۰۲۱ از داده‌های NVD با شناسه‌های CVE از سال‌های ۲۰۱۹ و ۲۰۲۰ استفاده می‌کند، که در ۱۸ مارس ۲۰۲۱ بارگیری شده است. این snapshot از داده‌های خام شامل تقریباً ۳۲،۵۰۰ شماره از CVE است که با یک نقص همراه است.

برای محاسبه‌ی یک ترتیب رتبه‌بندی شده از نقاط ضعف، یک فرمول نمره‌گذاری استفاده می‌شود که فراوانی‌ای که یک CWE علت اصلی یک آسیب‌پذیری است را با شدت پیش‌بینی‌شده‌ی بهره‌برداری از آن، ترکیب می‌کند. در هر دو مورد، فراوانی و شدت نسبت به حداقل و حداکثر مقادیر مشاهده‌شده نرمال می‌شوند.

برای تعیین فراوانی یک CWE، فرمول امتیازدهی تعداد دفعاتی که CWE به CVE در NVD نگاشته(۲۶) می‌شود را محاسبه می‌کند. در این محاسبه فقط از CVE هایی که دارای ضعف مرتبط هستند استفاده می‌شود، زیرا استفاده از کل مجموعه‌ی CVE در NVD منجر به نرخ فراوانی بسیار پایین و تفاوت بسیار کمی در بین انواع ضعف‌های مختلف می‌شود.

Freq = {count(CWE_X’ ∈ NVD) for each CWE_X’ in NVD}

Fr(CWE_X) = (count(CWE_X ∈ NVD) – min(Freq)) / (max(Freq) – min(Freq))

مؤلفه‌ی دیگر در فرمول نمره‌گذاری، شدت ضعف است که با میانگین نمره‌ی‌ CVSS همه‌ی CVE هایی که مربوط به یک CWE خاص هستند نشان داده می‌شود. برای محاسبه این مقدار از معادله‌ی زیر استفاده می‌شود:

Sv(CWE_X) = (average_CVSS_for_CWE_X – min(CVSS)) / (max(CVSS) – min(CVSS))

سپس سطح خطر ارائه‌شده توسط یک CWE خاص، با ضرب نمره شدت در نمره فراوانی، تعیین می‌شود.

Score(CWE_X) = Fr(CWE_X) * Sv(CWE_X) * 100

چند ویژگی از متدولوژی وجود دارد که نیاز به توضیح بیشتری دارند:

  • ضعف‌هایی که به‌ندرت کشف می‌‎شوند، فارغ از پیامدهای معمولی مرتبط با هرگونه بهره‌برداری، نمره‌ی بالایی دریافت نمی‌کنند. این موضوع منطقی است، زیرا اگر توسعه‌دهندگان اشتباه خاصی انجام ندهند، نباید ضعف را در CWE 25 مطرح کرد.
  • نقاط ضعف با تأثیر کم نمره‌ی بالایی دریافت نمی‌کنند. این نیز منطقی است، زیرا ناتوانی در ایجاد آسیب قابل‌توجه با بهره‌گیری از یک ضعف به این معناست که آن ضعف باید در زیر مواردی قرار گیرد که می‌توانند.
  • نقاط ضعفی که هم شایع هستند و هم می‌توانند صدمات قابل‌توجهی را ایجاد کنند باید امتیاز بالایی دریافت کنند.

۴- CWE Top 25 با متریک‌های نمره دهی

جدول زیر نشان‌دهنده‌ی CWE Top 25 در سال ۲۰۲۱ با اطلاعات مربوط به نمره دهی، ازجمله تعداد ورودی‌های مربوط به یک CWE خاص در مجموعه داده‌های NVD و نمره‌ی متوسط CVSS برای هر ضعف است.

رتبه شناسه شمارش NVD CVSS میانگین نمره‌ی کلی
[۱] CWE-787 ۳۰۳۳ ۸/۲۲ ۶۵/۹۳
[۲] CWE-79 ۳۵۶۴ ۵/۸۰ ۴۶/۸۴
[۳] CWE-125 ۱۴۴۸ ۶/۹۴ ۲۴/۹
[۴] CWE-20 ۱۱۲۰ ۷/۲۵ ۲۰/۴۷
[۵] CWE-78 ۸۳۳ ۸/۷۱ ۱۹/۵۵
[۶] CWE-89 ۸۳۰ ۸/۷۳ ۱۹/۵۴
[۷] CWE-416 ۸۰۷ ۷/۹۸ ۱۶/۸۳
[۸] CWE-22 ۷۸۳ ۷/۳۹ ۱۴/۶۹
[۹] CWE-352 ۷۴۱ ۷/۶۰ ۱۴/۴۶
[۱۰] CWE-434 ۳۸۱ ۸/۳۶ ۸/۴۵
[۱۱] CWE-306 ۳۸۱ ۷/۹۸ ۷/۹۳
[۱۲] CWE-190 ۳۶۸ ۷/۵۶ ۷/۱۲
[۱۳] CWE-502 ۲۸۰ ۸/۸۷ ۶/۷۱
[۱۴] CWE-287 ۳۲۴ ۷/۸۴ ۶/۵۸
[۱۵] CWE-476 ۴۰۴ ۶/۶۷ ۶/۵۴
[۱۶] CWE-798 ۲۷۵ ۸/۵۴ ۶/۲۷
[۱۷] CWE-119 ۲۷۸ ۸/۰۴ ۵/۸۴
[۱۸] CWE-862 ۳۶۱ ۶/۳۸ ۵/۴۷
[۱۹] CWE-276 ۲۹۸ ۶/۹۲ ۵/۰۹
[۲۰] CWE-200 ۳۳۰ ۶/۱۶ ۴/۷۴
[۲۱] CWE-522 ۲۳۲ ۷/۲۳ ۴/۲۱
[۲۲] CWE-732 ۲۴۹ ۶/۸۷ ۴/۲
[۲۳] CWE-611 ۲۰۶ ۷/۶۲ ۴/۰۲
[۲۴] CWE-918 ۲۰۷ ۷/۲۶ ۳/۷۸
[۲۵] CWE-77 ۱۶۴ ۸/۲۸ ۳/۵۸

۵- نقاط ضعف در آستانه یا Cusp

به روال سال گذشته، تیم CWE احساس می‌کند مهم است که این پانزده نقطه‌ی ضعف دیگر را که در خارج از Top 25 نهایی است را به اشتراک بگذارد. طبق فرمول امتیازدهی، این ضعف‌ها به‌طور بالقوه به‌اندازه‌ی کافی شدید نبوده یا به‌اندازه کافی شایع نبوده‌اند که در CWE Top 25 سال ۲۰۲۱ گنجانده شوند.

آنانی که با استفاده از CWE Top 25 سال ۲۰۲۱ اقدامات پیشگیرانه انجام می‌دهند و در مورد ریسک‌ها تصمیم‌گیری می‌کنند، ممکن است بخواهند این ضعف‌های اضافی را در تجزیه‌وتحلیل خود لحاظ کنند:

رتبه

شناسه

نام

شمارش NVD

CVSS میانگین

نمره کلی

تغییر نسبت به ۲۰۲۰

[۲۶]

CWE-295

تحقیق اعتبار نامناسب گواهی

۲۰۱

۶/۹۹

۳/۴۷

۲+

[۲۷]

CWE-400

مصرف کنترل نشده منابع

۲۰۰

۶/۹۹

۳/۴۶

۴-

[۲۸]

CWE-94

کنترل نادرست تولید کد (“تزریق کد”)

۱۳۸

۸/۶۳

۳/۱۸

۱۱-

[۲۹]

CWE-269

مدیریت نامناسب اختیارات

۱۷۲

۷/۳۰

۳/۱۶

۷-

[۳۰]

CWE-917

خنثی‌سازی نادرست عناصر ویژه مورداستفاده در بیان زبان توصیف(۲۷) (“تزریق زبان توصیف”)

۱۲۸

۹/۰۵

۳/۱۴

۱۷+

[۳۱]

CWE-59

 تصمیم‌گیری لینک(۲۸) نامناسب قبل از دسترسی به فایل (“دنباله‌روی لینک”)

۱۷۷

۷/۱۱

۳/۱۳

۹+

[۳۲]

CWE-401

انتشار حافظه‌ی ازدست‌رفته پس از یک عمر مؤثر

۲۰۵

۶/۴۲

۳/۱۳

۰

[۳۳]

CWE-362

اجرای همر‌وند با استفاده از منابع مشترک با همگام‌سازی(۲۹) نامناسب (“شرایط مسابقه”)

۲۰۲

۶/۴۷

۳/۱۲

۱+

[۳۴]

CWE-427

عنصر مسیر جستجوی کنترل نشده

۱۵۸

۷/۶۶

۳/۱۰

۲۴+

[۳۵]

CWE-319

انتقال متن واضح (Cleartext) از اطلاعات حساس

۱۷۷

۶/۹۹

۳/۰۶

۷+

[۳۶]

CWE-319

دسترسی به منابع با استفاده از نوع ناسازگار (“سردرگمی نوع(۳۰)“)

۱۲۴

۸/۵۱

۲/۸۰

۹+

[۳۷]

CWE-601

تغییر مسیر URL به سایت ناموثق  (“Open Redirect”)

۱۸۴

۶/۱۲

۲/۶۲

۲-

[۳۸]

CWE-863

مجوز دهی نادرست

۱۵۵

۶/۸۰

۲/۵۷

۹-

[۳۹]

CWE-532

درج اطلاعات حساس در فایل Log

۱۷۱

۶/۲۶

۲/۵۱

۶-

[۴۰]

CWE-770

تخصیص منابع بدون محدودیت یا کاهش(۳۱)

۱۳۶

۶/۹۹

۲/۳۴

۱-

۶- محدودیت‌های متدولوژی

۶-۱- سوگیری(۳۲) داده‌ها

اول، این رویکرد فقط از داده‌هایی استفاده می‌کند که به‌طور عمومی گزارش‌شده و در NVD ضبط‌شده‌اند و آسیب‌پذیری‌های متعددی وجود دارد که فاقد شناسه‌ی CVE هستند. بنابراین آسیب‌پذیری‌هایی که در NVD گنجانده نشده‌اند از این روش کنار گذاشته می‌شوند. به‌عنوان‌مثال، CVE/NVD معمولاً آسیب‌پذیری‌هایی را که قبل از انتشار عمومی سیستم، در سرویس‌های آنلاین یا نرم‌افزارهای سفارشی داخلی یک سازمان واحد یافت شده و رفع شده‌اند را پوشش نمی‌دهد. نقاط ضعفی که منجر به این نوع آسیب‌پذیری‌ها می‌شود، ممکن است در CWE Top 25 سال ۲۰۲۱ کمتر نشان داده شود.

دوم، حتی برای آسیب‌پذیری‌هایی که CVE دریافت می‌کنند، اغلب اطلاعات کافی برای شناسایی دقیق (یا صحیح) CWE مناسب که موردِ بهره‌برداری قرارگرفته وجود ندارد. بسیاری از ورودی‌های CVE توسط عرضه‌کنندگان محصول منتشر می‌شوند که تنها تأثیر آسیب‌پذیری را بدون ارائه جزئیات خود آسیب‌پذیری توصیف می‌کنند. به‌عنوان‌مثال، بیش از  ۴۸۰۰ مورد CVE از سال ۲۰۱۹ و ۲۰۲۰ اطلاعات کافی برای تعیین ضعف اساسی را نداشتند. در موارد دیگر، توصیف CVE نحوه حمله توسط آسیب‌پذیری را پوشش می‌دهد، اما این همیشه نشان نمی‌دهد که ضعف مرتبط چیست. به‌عنوان‌مثال، اگر یک ورودی طولانی(۳۳) به یک برنامه باعث خرابی شود، علت خرابی می‌تواند ناشی از سرریز بافر، یک عبارت ‌دسترس‌پذیر(۳۴)، تخصیص بیش‌ازحد حافظه، یک استثنای بدون کنترل و غیره باشد. همه‌ی این‌ها با CWE های مختلف و منفرد مطابقت دارند. در سایر ورودی‌های CVE، فقط از اصطلاحات عمومی مانند “ورودی موذی” استفاده می‌شود، که هیچ نشانه‌ای از ضعف مربوطه نمی‌دهد. برای برخی از مدخل‌ها، ممکن است اطلاعات مفیدی در منابع موجود باشد، اما تجزیه‌وتحلیل آن دشوار است. به‌عنوان‌مثال، ممکن است یک محقق از یک برنامه‌ی گیج‌کننده (Fuzzing) استفاده کند که یک مورد آزمایشی مفید ایجاد کند که باعث crash می‌شود، اما توسعه‌دهنده به‌سادگی crash را بدون طبقه‌بندی و گزارش اشتباه اصلی حل می‌کند.

سوم، سوگیری ذاتی(۳۵) در مجموعه داده‌ی CVE/NVD به دلیل مجموعه‌ای از عرضه‌کنندگان محصول که آسیب‌پذیری‌ها را گزارش می‌دهند و زبان‌های برنامه‌نویسی که توسط آن فروشندگان استفاده می‌شود، وجود دارد. اگر یکی از بزرگ‌ترین مشارکت‌کنندگان در CVE/NVD در درجه اول از C به‌عنوان زبان برنامه‌نویسی خود استفاده کند، ضعف‌هایی که اغلب در برنامه‌های C وجود دارد به‌احتمال‌زیاد ظاهر می‌شود. برنامه‌های Fuzzing می‌توانند در برابر برنامه‌های مبتنی بر حافظه(۳۶) بسیار مؤثر باشند، بنابراین ممکن است آسیب‌پذیری‌های بیشتری پیدا کنند. معیار نمره‌گذاری که در بالا ذکر شد، تلاش می‌کند تا با نگاه کردن به مواردی که بیشترین گزارش CWE ها را ارائه می‌دهد، این سوگیری را کاهش دهد. و همچنین میانگین نمره CVSS را در نظر می‌گیرد.

سوگیری دیگر در مجموعه داده‌های CVE/NVD این است که اکثر محققان آسیب‌پذیر و یا ابزارهای تشخیص، در یافتن نقاط ضعف بسیار ماهر هستند، اما نه دیگران. آن دسته از ضعف‌هایی که محققان و ابزارها برای یافتن آن تلاش می‌کنند، در CWE Top 25 سال ۲۰۲۱ کمتر نمایان می‌شوند.

سرانجام، شکاف‌ها یا مشخصه‌سازی‌های اشتباه مشکوک بودن در سلسله‌مراتب CWE به نگاشت‌های نادرست منجر می‌شود. کار نگاشت مجدد که در حال انجام است به تیم CWE کمک می‌کند تا با این شکاف‌ها و مسائل محتوا آشنا شوند که در نسخه‌های بعدی CWE موردبررسی قرار خواهند گرفت.

۶-۲- سوگیری متریک

یک سوگیری مهم مربوط به متریک که بایستی درک گردد این است که به دلیل شیوع آن‌ها دربسته‌های نرم‌افزاری جداگانه، به‌طور غیرمستقیم نقیصه اجرا را بر نقیصه‌های طراحی اولویت می‌دهد. به‌عنوان‌مثال، یک برنامه‌ی وب ممکن است به دلیل سطح حمله‌ی زیاد دارای آسیب‌پذیری‌های متنوعی از نوع cross-site scripting یا XSS باشد، اما تنها یک نمونه از تصدیق هویت ضعیف می‌تواند کل برنامه را به خطر بیندازد. می‌توان یک متریک جایگزین ابداع کرد که شامل درصد محصولات درون NVD است که حداقل یک CVE با CWE خاص دارند. این نوع معیار اغلب توسط عرضه‌کنندگان امنیت برنامه کاربردی در تجزیه‌وتحلیل سالانه خود استفاده می‌شود.

یکی دیگر از محدودیت‌های متریک در دسامبر ۲۰۲۰ توسط Galhardo، Bojanova، Mell و Gueye  در مقاله ACSC خود تحت عنوان “اندازه‌گیری مهم‌ترین ضعف‌های امنیتی نرم‌افزار” مطرح شد. نویسندگان “دریافتند که معادله منتشرشده، فرکانس را بسیار سوگیر می‌کند و تقریباً از قابلیت بهره‌برداری و تأثیر در ایجاد لیست‌های برتر با اندازه‌های مختلف چشم‌پوشی می‌کند. این به دلیل تفاوت در توزیع مقادیر متریک اجزا است.” به نظر می‌رسد این انتقاد در لیست امسال نیز کاربرد دارد. برای مثال، نحوه رتبه‌بندی CWE-79 که در رتبه ۲ است را در نظر بگیرید، اما دارای کمترین میانگین نمره CVSS (80/5) از کل Top 25 و لیست آستانه یا Cusp است.

طی سال آینده، تیم Top 25 به‌طور فعال متریک جایگزین مانند این‌ها را موردبررسی قرار خواهد داد و ممکن است یک متریک جدید برای تعیین CWE Top 25 در سال ۲۰۲۲ انتخاب شود.

۶-۳- وظیفه‌ی نگاشت مجدد

برای آماده‌سازی داده‌های CVE/NVD برای تجزیه‌وتحلیل، تیم CWE نگاشت‌های CWE مدخل‌های منتخب از CVE/NVD را بررسی کرد و در صورت لزوم، مدخل‌ها را “نگاشت مجدد” داد. به‌طوری‌که آن‌ها به شناسه‌های CWE مناسب‌تری اشاره کردند.

این کار نگاشت مجدد در بیش از نه هزار مدخل CVE با توجه به لیست Top 25 سال ۲۰۲۱ انجام شد. داده‌های بازنگری شده با NIST به اشتراک گذاشته‌شده است تا بتوانند ورودی‌های CVE خود را در NVD به‌روز کنند.

فعالیت‌های اولیه عبارت بودند از:

  • بارگیری کردن یک snapshot از داده‌های NVD از سال ۲۰۱۹ و ۲۰۲۰ . این مخزن در ۱۸ مارس ۲۰۲۱ بارگیری شد و در طول تجزیه‌وتحلیل مورداستفاده قرار گرفت.
  • انجام جستجوهای خودکار کلمات کلیدی برای یافتن بازنویسی احتمالی ورودی‌های CWE که نادرست ترسیم‌شده‌اند. به‌عنوان‌مثال، برخی از مدخل‌های CVE به سطح بالاتر CWE-119 (محدودیت نامناسب عملیات در محدوده بافر حافظه) نگاشت شدند. بااین‌حال، عبارات مربوط به خواندن خارج از محدوده به‌طور خودکار در توضیحات CVE قابل‌کشف هستند. در این موارد، نگاشت به سطح پایین CWE-125 (خواندن خارج از محدوده‌) مناسب‌تر تلقی می‌شود.
  • گسترش دادن مطابقت کلمات کلیدی برای تشخیص نگاشت‌های احتمالی برای بسیاری از ورودی‌های CWE دیگر، ازجمله مواردی که فقط در یکی دو سال گذشته ایجاد شده‌اند. یک تطبیق کننده‌ی مرتبط برای جستجوی نام واقعی نوشته‌های CWE در توضیحات CVE ایجاد شد، که به طرز شگفت‌انگیزی موفق بود.
  • شناسایی کردن چهار کلاس با بالاترین رتبه بر اساس محاسبه snapshot از Top 25 با استفاده از داده‌های اصلی NVD در ۱۸ مارس، سپس موردبررسی قرار دادن دقیق‌تر آن‌ها. این ۴ کلاس برتر متمرکز CWE-20 ، CWE-200 ، CWE-119 و CWE-269 بودند.
  • انتخاب کردن زمینه‌های موضوعی اضافی برای تأکید. تأکید امسال شامل کنترل دسترسی، رمزنگاری و تصادفی بودن بود. توجه داشته باشید که این اولین سالی است که CVE های مربوط به رمزنگاری به‌صورت گروهی مورد تجزیه‌وتحلیل قرار می‌گیرند. اگرچه این روی Top 25 تأثیر نمی‌گذارد، اما برای درک محدودیت‌های CWE برای پشتیبانی از نگاشت با توجه به رمزنگاری بسیار مفید بود. کنترل دسترسی همچنین به دلیل شیوع مسائل مربوط به کنترل سطح در Top 25 و Cusp و همچنین ظن ناسازگاری نگاشت‌ها مورد هدف قرار گرفت، که معلوم شد درست است.
  • انجام دادن تجزیه‌وتحلیل عمیق‌تری در برخی از مناطق مشکوک به نادرستی نگاشت، به‌ویژه تزریق. این به‌طورمعمول شامل بررسی دقیق‌تر منابع در مقایسه با سال‌های گذشته بود. به‌عنوان‌مثال، بر اساس تجزیه‌وتحلیل در سال ۲۰۲۰، نقشه‌های CWE-74 و CWE-77 قبلاً شناخته‌شده بودند که هنگام تجزیه‌وتحلیل منابع، شانس خوبی برای نگاشت دقیق‌تر به CWE-78 دارند. (https://medium.com/@CWE_CAPEC/2020-cwe-top-25-analysis-c39d100cb0fd)
  • اولویت برداری دسته‌بندی‌ها. به دلیل حذف دسته‌بندی‌ها در View 1003 در اواخر سال ۲۰۱۹، هیچ تعدادی از CVE ها باقی نمانده بودند که به دسته‌ها نگاشت شوند. CVE های طبقه‌بندی‌شده به دسته‌ها، به‌عنوان یک گروه خود تجزیه‌وتحلیل نشده‌اند، اما اغلب در گروه‌های دیگر مانند رمزنگاری یا تطابق کلمه کلیدی گنجانده‌شده‌اند. لازم به ذکر است که برخی منابع CNA هنوز از داده‌های ۲۰۲۰ استفاده می‌کردند.
  • بهبود فرایند نگاشت دستی با ابزار و یادداشت‌های خودکار. درحالی‌که برخی از این پیشرفت‌ها تجربی بودند، به‌احتمال‌زیاد در Top 25 آینده، مانند بررسی syntax خودکار برای گزارش مجدد ارائه‌شده توسط تحلیلگران، مورداستفاده قرار می‌گیرند. برچیدن خودکار URL های مرجع برای شناسه‌های CWE و مطابقت کلمات کلیدی و تغییر پرونده‌های CVE بین “دسته‌های تجزیه‌وتحلیل” مختلف برای محرومیت‌زدایی یا تعیین مجدد CVE هایی که چالش‌های پیچیده‌تری را ارائه می‌دهند.
  • درحالی‌که تیم CWE تمام تلاش خود را برای به حداقل رساندن ذهنیت در نگاشت مجدد انجام داد، فقدان اطلاعات مرتبط و مفصل موجود در برخی از توصیفات CVE بدین معناست که بخش کوچکی از مجموعه‌ی داده هنوز به برخی از نتایج تحلیلی ذهنی نیاز دارد.

در سال‌های گذشته، هم‌زمان با انتشار Top 25، نمای CWE-1003 نیز اصلاح شد تا اطمینان حاصل شود که همچنان می‌تواند معمول‌ترین نگاشت‌های CWE را پوشش دهد. این امر پیچیدگی فنی اضافی را برای NIST و تیم CWE Top 25 ایجاد کرد. امسال View 1003 در نسخه CWE 4.6 به‌احتمال‌زیاد در ماه اکتبر به‌روز می‌شود.

۶-۴- محدودیت‌های وظیفه نگاشت مجدد

پس از استفاده از این روش نگاشت مجدد برای لیست‌های برتر ۲۰۱۹، ۲۰۲۰ و ۲۰۲۱، برخی محدودیت‌ها آشکارشده است:

  • تعداد CVE ها با ورودی‌های CWE سطح بالا همچنان زیاد است و این باعث می‌شود که تعداد زیادی از CVE ها مجدداً به‌صورت دستی جابجا شوند، که این امر مستلزم کار زیاد است.
  • نگاشت مجدد در یک بازه زمانی کوتاه قبل از انتشار لیست انجام شد، که زمان و فشار کارکنان را در این مدت افزایش داد. همچنین، تبادل داده با NIST تغییر کرد تا داده‌های نگاشت در کل دوره‌ی مرور، به‌جای همه در یک‌بار در پایان، ارائه شود. بااین‌وجود، بازه‌ی زمانی کوتاه، دریافت، تجزیه‌وتحلیل و پردازش همه تغییرات نگاشت را برای کارکنان NVD دشوار کرد.
  • ازآنجاکه داده‌ها مربوط به سال‌های گذشته است، مانع از بازخورد به‌موقع به کارکنان NIST می‌شود، به‌طوری‌که آن‌ها بتوانند شیوه‌های آموزشی و نگاشت خود را تنظیم کنند.
  • فقدان جزئیات مرتبط برای بسیاری از CVE ها همچنان به تحلیل وقت‌گیر و تنوع در نتایج نگاشت، همراه با ترجیح بیشتر برای تجزیه‌وتحلیل از نزدیک مراجع، ادامه می‌دهد.
  • حتی در داخل تیم CWE Top 25، تحلیلگران مختلف می‌توانند در نگاشت‌های CWE که برای CVE یکسان انتخاب می‌کنند ناسازگار باشند، مخصوصاً برای آسیب‌پذیری‌هایی که عبارت واضحی برای ضعف ندارند. مشخص نیست که آیا این محدودیت خود CWE است، یا گوناگونی اصطلاحات در توصیفات CVE است یا دیدگاه‌ها و سطوح مختلف تجزیه‌وتحلیل که نگاشت‌ها را انجام می‌دهند.
  • پس از اتمام نگاشت مجدد، نسخه NVD که در ابتدا استفاده می‌شد معمولاً چندماهه شده بود – برای امسال از NVD مربوط به ۱۸ مارس ۲۰۲۱ استفاده شد. این موضوع می‌تواند باعث ناسازگاری‌های آشکاری برای کسانی شود که می‌خواهند متریک را تکرار کنند، زیرا رکوردهای جدید CVE در سال‌های قبل همچنان اضافه می‌شوند.

در آینده، کار نگاشت مجدد ممکن است برای حذف یا کاهش این محدودیت‌ها تغییر کند.

۷- فرصت‌های نوظهور برای بهبود

علیرغم محدودیت‌های فعلی وظیفه نگاشت مجدد، اخیراً چندین فعالیت شکل‌گرفته است که ممکن است پیشرفت‌های مثبتی را برای داده‌های نگاشت NVD/CWE نشان دهد که در لیست‌های Top 25 آینده استفاده می‌شود:

  • برنامه Collaborative Vulnerability Metadata Acceptance Process یا CVMAP که متعلق به NIST است با تعامل مثبت با CVE Candidate Numbering Authorities یا CNAها که به‌احتمال‌زیاد کیفیت نگاشت CWE را از آن CNA ها بهبود می‌بخشد، طرفداران زیادی پیدا کرده است. برنامه CWE قصد دارد تعامل نزدیک‌تری با CNA ها داشته باشد تا به داده‌های دقیق‌تری دست یابد.
  • نسخه ۵٫۰ از CVE JSON record format شامل پشتیبانی مستقیم برای گنجاندن نقشه‌های CWE در پرونده‌های CVE است که به نظر می‌رسد کیفیت و دقت نگاشت‌های CWE را بهبود بخشد.
  • در مارس ۲۰۲۱، برنامه CWE در حقیقت CVE->CWE Mapping Guidance را منتشر کرد، که انجام کار فنی برای یافتن نگاشت‌های مناسب CWE برای آسیب‌پذیری‌های خود را برای CNA ها و سایر طرفین آسان می‌کند.

 

تقدیرات

تیم CWE Top 25 در سال ۲۰۲۱ (به ترتیب حروف الفبای انگلیسی) شامل اعضای زیر است: آدام چادری، استیو کریستی کلی، کری کراوز، کوین دیویس، دوون الیس، پارکر گریسون، کریستینا جانس، لوک مالینوفسکی، روشی پوروهیت، بکی پاول، دیوید روتنبرگ، الک سامرز و برایان ووهاسکا. همچنین، اعضای تیم NIST NVD که روی موضوع  Top 25 هماهنگ شدند عبارت‌اند از: کریستوفر ترنر، رابرت بایرز و ویدیا آنانتاکریشنا. درنهایت، همچنین جامعه گسترده‌تر CWE برای بهبود فرآیند پیشنهاد‌ها داشته‌اند.

 

منبع

[۱] https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html


(۱) Common Weakness Enumeration (CWE™)
(2) demonstrative
(3) Exposures
(4) prevalence
(5) Out-of-bounds
(6) Neutralization
(7) Validation
(8) Injection
(9) Path Traversal
(10) Cross-Site Request Forgery
(11) Integer Overflow
(12) Deserialization
(13) Dereference
(14) Missing Authorization
(15) Credentials
(16) External Entity Reference
(17) abstract
(18) variant
(19) remapping
(20) mappings
(21) Privilege
(22) Consumption
(23) digestible
(24) data-driven
(25) analytical rigor
(26) mapped
(27) Expression Language Statement
(28) Link Resolution
(29) Synchronization
(30) Type Confusion
(31) Throttling
(32) Bias
(33) long input
(34) reachable assertion
(35) inherent bias
(36) memory-based