یکی از پرتنش‌ترین پروژه‌های امنیتی که انجام دادم، برای شرکتی بود که اسکن آسیب‌پذیری صدها آیتم برگردانده بود. تیم فنی، بدون اولویت‌بندی، به‌سراغ آیتم‌هایی رفت که ساده‌تر بودند و هفته‌ها صرف کارهایی کرد که بهره‌کشی از آن‌ها در عمل نزدیک به صفر بود؛ در همان زمان، یک آسیب‌پذیری بحرانی که در فهرست جزو اولویت دهم بود، تقریباً به بهره‌کشی واقعی منجر شد. تجربه‌ام می‌گوید رتبه‌بندی آسیب‌پذیری‌ها (vulnerability prioritization) یک تصمیم فنی نیست؛ یک تصمیم مهندسی-کسب‌وکاری است که به چارچوب مشخصی نیاز دارد. در ادامه همان چارچوبی را می‌گویم که در پروژه‌های واقعی استفاده می‌کنم.

چرا رتبه‌بندی، مهم‌تر از رفع است؟

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

در امنیت، همه آسیب‌پذیری‌ها ارزش یکسان ندارند؛ تفاوت بین یک ضعف تئوریک و یک بهره‌کشی فعال، به اندازه تفاوت بین توفان و نسیم است.

CVSS چیست و چرا تنها کافی نیست؟

CVSS (Common Vulnerability Scoring System) یک استاندارد بین‌المللی برای امتیازدهی شدت آسیب‌پذیری است. امتیازها از ۰ تا ۱۰ هستند و به چهار سطح تقسیم می‌شوند: پایین (۰–۳.۹)، متوسط (۴–۶.۹)، بالا (۷–۸.۹) و بحرانی (۹–۱۰). این امتیاز بر اساس معیارهایی مثل قابلیت بهره‌کشی و میزان اثر محاسبه می‌شود. جدول‌های دقیق از طریق CVE چیست و چه نقشی در امنیت دارد و خواندن گزارش‌های CVE در دسترس است.

اما در تجربه من، استفاده از CVSS تنها، منجر به دو خطا می‌شود. اول، امتیاز CVSS خودِ آسیب‌پذیری را می‌سنجد، نه بهره‌کشی واقعی از آن. دوم، اثر کسب‌وکاری پروژه را در نظر نمی‌گیرد. یک آسیب‌پذیری با امتیاز CVSS ۷ روی سروری که به اینترنت متصل نیست، به‌مراتب کم‌خطرتر از یک آسیب‌پذیری با امتیاز ۶ روی صفحه ورود کاربران است. پس CVSS نقطه شروع است، نه نقطه پایان.

بهره‌کشی فعال و EPSS

EPSS (Exploit Prediction Scoring System) یک سیستم امتیازدهی است که احتمال بهره‌کشی واقعی از یک آسیب‌پذیری را در ۳۰ روز آینده تخمین می‌زند. اگر یک آسیب‌پذیری در CISA KEV (Known Exploited Vulnerabilities Catalog) فهرست شده باشد، یعنی بهره‌کشی فعال در دنیای واقعی اتفاق افتاده و رفع آن، در اولویت بالاتری قرار می‌گیرد، مستقل از امتیاز CVSS. این تفاوت، در تجربه من مهم‌ترین عنصر رتبه‌بندی است: آسیب‌پذیری‌های KEV، در رتبه‌بندی ما همیشه در بالای فهرست قرار می‌گیرند.

سه منبع کلیدی برای رصد بهره‌کشی فعال:

  • CISA KEV Catalog برای آسیب‌پذیری‌هایی که در دنیای واقعی بهره‌کشی‌شده‌اند.
  • EPSS Score برای تخمین احتمال بهره‌کشی در آینده نزدیک.
  • گزارش‌های امنیتی هفتگی از منابع معتبر (مثل بلاگ‌های Wordfence، Sucuri و Patchstack برای اکوسیستم وردپرس).

زمینه کسب‌وکاری: دارایی، تهدید، اثر

پس از سنجش شدت فنی و شواهد بهره‌کشی، نوبت به زمینه کسب‌وکاری می‌رسد. سه سؤال کلیدی برای هر آسیب‌پذیری:

  1. دارایی متأثر چیست؟ سرور کاربران، پایگاه داده فروشگاهی، یا یک سرور آزمایشی داخلی؟
  2. تهدیدکننده محتمل کیست؟ ربات خودکار، مهاجم هدفمند یا کاربر داخلی؟
  3. اثر نفوذ چیست؟ افشای اطلاعات، از دسترس خارج شدن سرویس، یا اعتبار برند؟

در تجربه من، این سه سؤال، بیشترین اثر را در رتبه‌بندی دارند. یک آسیب‌پذیری روی سرور داخلی که به‌صورت روزانه بکاپ می‌گیرد، اثر کمتری نسبت به آسیب‌پذیری روی صفحه ورود مشتریان دارد، حتی اگر امتیاز CVSS آن پایین‌تر باشد.

ماتریس رتبه‌بندی چهارسطحی

برای تصمیم‌گیری سریع در تیم، از ماتریس چهارسطحی زیر استفاده می‌کنم:

سطحمعیارزمان رفع هدف
P1 — بحرانیKEV یا بهره‌کشی فعال + اثر بالا + دارایی حساس۲۴ تا ۷۲ ساعت
P2 — بالاCVSS بالای ۷ + EPSS بالا یا دارایی حساس۱ هفته
P3 — متوسطCVSS متوسط + دارایی معمولی۱ ماه
P4 — پایینCVSS پایین یا اثبات‌ناپذیری بهره‌کشیدر بازه نگهداری بعدی

نکته مهم: این ماتریس، نقطه شروع است نه نقطه پایان. در پروژه‌های واقعی، گاهی یک آسیب‌پذیری P3 در سایت مشتری بزرگ می‌تواند به P1 ارتقا پیدا کند، به‌خاطر ریسک اعتباری. این انعطاف، بخشی از قضاوت مهندسی است که هیچ ماتریسی جایگزینش نمی‌شود.

در رتبه‌بندی آسیب‌پذیری‌ها، CVSS و EPSS دو ستون ماتریس‌اند؛ ستون سوم، کسب‌وکار شماست که هیچ سیستم خودکاری نمی‌تواند جایگزینش شود.

گردش کار رفع در تیم

پس از رتبه‌بندی، گردش کار رفع باید روشن باشد. الگویی که در پروژه‌های واقعی استفاده می‌کنم:

  1. هر آسیب‌پذیری، پس از کشف، به یک برچسب (تیکت) تبدیل شود، با اطلاعات CVSS، EPSS و سطح اولیه.
  2. در جلسه هفتگی امنیتی، سطح‌ها بازبینی و نهایی شوند.
  3. هر آسیب‌پذیری، به یک فرد مسئول تخصیص داده شود.
  4. هر رفع، به همراه مستند کوتاه (چه چیزی تغییر کرد، چطور تست شد) ثبت شود.
  5. پس از رفع، آزمون بازیابی و پایش چند روزه انجام شود تا مطمئن شوید باگ برنگشته.

در وردپرس، بسیاری از آسیب‌پذیری‌ها با آپدیت افزونه یا هسته رفع می‌شوند. اما آپدیت بدون تست، خودش می‌تواند به یک آسیب‌پذیری تبدیل شود؛ پروتکل ایمن آپدیت در تغییر قالب بدون آسیب آمده است. برای رفع آسیب‌پذیری‌های تزریق کد، مفاهیم در حملات XSS و SQL Injection آمده است.

نمونه واقعی از اولویت‌بندی

یک نمونه ملموس: در پروژه‌ای، اسکنر هفت آسیب‌پذیری روی افزونه‌های وردپرس گزارش داد. در ابتدا همه با هم مطرح شدند. با اعمال ماتریس، ترتیب زیر مشخص شد:

  • یک آسیب‌پذیری در افزونه فرم‌ساز که KEV بود؛ P1.
  • دو آسیب‌پذیری در افزونه‌های جانبی با CVSS متوسط؛ P3.
  • چهار مورد که به‌علت عدم پشتیبانی بهره‌کشی، در P4 قرار گرفتند.

نتیجه: در ۷۲ ساعت اول، فقط یک مورد بحرانی رفع شد و بقیه به بازه هفتگی و ماهانه منتقل شدند. تجربه‌ام می‌گوید این رویکرد، هم استرس تیم را کم می‌کند و هم ترس را با تصمیم‌گیری آگاهانه جایگزین می‌کند.

سنجش اثربخشی و بازخورد

بدون سنجش، رتبه‌بندی شما روی کاغذ می‌ماند. سه متریک کلیدی:

  • زمان کشف تا رفع (MTTR): به‌تفکیک سطح P1/P2.
  • نرخ بروز آسیب‌پذیری جدید در همان بخش: اگر بعد از رفع، همان افزونه باز آسیب‌پذیری دارد، بررسی کنید که چرا انتخاب اولیه شما اشتباه بوده.
  • نرخ بهره‌کشی موفق: این متریک سخت به‌دست می‌آید اما با ابزارهای مانیتورینگ امنیتی (مثل Wordfence یا Sucuri)، بخشی از آن قابل اندازه‌گیری است.

جدول مرجع

معیاروزن در رتبه‌بندیمنبع
بهره‌کشی فعالبسیار بالاCISA KEV
احتمال بهره‌کشیبالاEPSS Score
شدت فنیبالاCVSS Score
حساسیت داراییبالاتحلیل داخلی
در دسترس بودن راه‌حلمتوسطسازنده افزونه/نرم‌افزار
پیچیدگی بهره‌کشیمتوسطگزارش CVE
اثر برندمتوسطقضاوت کسب‌وکاری

پرسش‌های کوتاه

آیا می‌توانم از CVSS تنها استفاده کنم؟ خیر، برای سایت‌های واقعی، EPSS و KEV مکمل‌های ضروری‌اند. تجربه من نشان می‌دهد بیشتر آسیب‌پذیری‌هایی که در دنیای واقعی بهره‌کشی شده‌اند، در KEV ظاهر می‌شوند، حتی اگر CVSS‌شان بحرانی نباشد.

آیا همه آسیب‌پذیری‌های P1 را باید در ۲۴ ساعت رفع کرد؟ بله، اگر اثر بالایی روی دارایی حساس دارند. اگر سازمان شما SLA داخلی دارد، همان چارچوب را رعایت کنید. در تجربه من، درخواست SLA کوتاه‌تر از آنچه تیم واقعاً می‌تواند اجرا کند، فقط استرس می‌سازد.

چطور بفهمم آسیب‌پذیری در پروژه‌ام بهره‌کشی شده است؟ اول، علائم عمومی مثل ریدایرکت‌های عجیب، فایل‌های تازه در پوشه uploads و افت سرعت ناگهانی را در علائم آلودگی وردپرس بررسی کنید. اگر شک دارید، پیدا کردن بدافزار مخفی در وردپرس مسیر عملی دارد.

چه زمانی باید به یک مشاور امنیتی بیرونی مراجعه کرد؟ اگر آسیب‌پذیری از نوع zero-day باشد یا روی سرویس‌های بحرانی اثر بگذارد، در تجربه من مشاوره بیرونی سریع‌ترین راه پیشگیری از فاجعه است.

جمع‌بندی مسیر

رتبه‌بندی آسیب‌پذیری‌ها، ترکیبی از سه محور است: شدت فنی، شواهد بهره‌کشی و زمینه کسب‌وکاری. تجربه من می‌گوید اگر فقط یک کار بکنید، فهرست آسیب‌پذیری‌های فعلی خود را با CISA KEV و EPSS تطبیق دهید؛ احتمالاً چند مورد P1 پنهان در فهرست پیدا می‌کنید که تا امروز به‌عنوان P3 دیده می‌شد. اگر تیم دارید، ماتریس چهارسطحی را به‌عنوان قرارداد داخلی بپذیرید و MTTR را ماهانه پایش کنید. اگر تجربه‌ای از رتبه‌بندی دارید که در منابع عمومی کمتر گفته شده، در دیدگاه‌ها بنویسید؛ همان تجربه برای نفر بعدی ارزشمندتر از هر راهنمای عمومی است. 🔐