آن ابزاری که یک آسیب‌پذیری پنج‌ساله را در پنج دقیقه کشف کرد

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

اسکنر آسیب‌پذیری چیست؟

اسکنر آسیب‌پذیری یک نرم‌افزار یا سرویس است که به‌طور خودکار سایت شما را بررسی می‌کند و به‌دنبال آسیب‌پذیری‌های شناخته‌شده می‌گردد. این ابزار معمولاً با ارسال درخواست‌های مختلف به سرور و تحلیل پاسخ‌ها، الگوهای آسیب‌پذیری را تشخیص می‌دهد. اما نکتهٔ مهم این است که هیچ اسکنری قادر به کشف همهٔ آسیب‌پذیری‌ها نیست؛ به‌ویژه آسیب‌پذیری‌های منطقی و آسیب‌پذیری‌های Zero Day.

اسکنرها را می‌توان به چند دسته تقسیم کرد: اسکنرهای وب‌اپلیکیشن که کل سایت را بررسی می‌کنند، اسکنرهای شبکه که تمرکزشان روی زیرساخت است، و اسکنرهای کد که کد منبع را تحلیل می‌کنند. هرکدام از این دسته‌ها کاربرد و محدودیت‌های خودش را دارد. جزئیات بیشتر در انواع آسیب‌پذیری‌های رایج وب آمده است.

## اسکنرهای وب‌اپلیکیشن

اسکنرهای وب‌اپلیکیشن پرکاربردترین نوع اسکنرها هستند و معمولاً از طریق آدرس URL سایت کار می‌کنند. این اسکنرها با ارسال درخواست‌های مختلف، رفتار سایت را تحلیل می‌کنند و به‌دنبال آسیب‌پذیری‌های رایج مثل XSS، SQL Injection، RFI، LFI و CSRF می‌گردند. نمونه‌های شناخته‌شدهٔ این دسته شامل OWASP ZAP، Burp Suite، Acunetix و Nessus هستند.

هرکدام از این ابزارها نقاط قوت و ضعف خودشان را دارند. OWASP ZAP یک ابزار رایگان و متن‌باز است که به‌ویژه برای توسعه‌دهندگان مناسب است. Burp Suite نسخهٔ رایگان و پولی دارد و در بین تسترهای حرفه‌ای بسیار محبوب است. Acunetix یک ابزار تجاری با رابط کاربری ساده است که برای سازمان‌ها طراحی شده. اگر به‌دنبال فهم عمیق‌تر حملات وب هستید، حملات XSS چیست و چگونه دفع می‌شود و SQL Injection چیست و چگونه جلوگیری کنیم اطلاعات تکمیلی خوبی ارائه می‌دهند.

اسکنرهای ویژه وردپرس

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

علاوه بر WPScan، برخی افزونه‌های امنیتی وردپرس هم قابلیت اسکن داخلی دارند. فهرست بهترین افزونه‌های امنیتی وردپرس ابزارهای مناسب برای این کار را معرفی می‌کند. ترکیب این دو رویکرد — اسکنر تخصصی و افزونهٔ امنیتی — پوشش بهتری ایجاد می‌کند. اگر می‌خواهید بدانید چرا وردپرس هدف اصلی حملات است، چرا وردپرس هدف حملات سایبری است تحلیل عمیقی ارائه می‌دهد.

اسکنرهای کد ایستا (SAST)

SAST یا Static Application Security Testing به دسته‌ای از ابزارها گفته می‌شود که کد منبع را بدون اجرای آن تحلیل می‌کنند. این ابزارها به‌ویژه در فرآیند توسعه مفید هستند، چون می‌توانند آسیب‌پذیری‌ها را قبل از انتشار کد شناسایی کنند. نمونه‌های شناخته‌شده شامل SonarQube، Snyk Code و Checkmarx هستند.

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

اسکنرهای DAST و IAST

DAST یا Dynamic Application Security Testing به اسکنرهایی گفته می‌شود که برنامه را در حال اجرا تحلیل می‌کنند. اسکنرهای وب‌اپلیکیشن که در بالا معرفی شدند در این دسته قرار می‌گیرند. IAST یا Interactive Application Security Testing به ترکیبی از SAST و DAST گفته می‌شود که با اجرای برنامه و تحلیل کد به‌طور همزمان، پوشش بهتری ارائه می‌دهد.

انتخاب بین این دسته‌ها بستگی به مرحله‌ای از چرخهٔ توسعه دارد که در آن هستید. در مرحلهٔ کدنویسی، SAST مناسب‌تر است. در مرحلهٔ تست پیش از انتشار، DAST کاربردی‌تر است. برای پروژه‌های بزرگ، ترکیب هر دو رویکرد توصیه می‌شود.

اسکنرهای سرویس‌محور آنلاین

علاوه بر ابزارهای نصب‌شدنی، سرویس‌های آنلاین متعددی هم وجود دارند که اسکن سریعی از سایت ارائه می‌دهند. این سرویس‌ها معمولاً راحت‌تر هستند چون نیازی به نصب و پیکربندی ندارند، اما در کنترل و جزئیات محدودتر هستند. سرویس‌هایی مثل Security Headers، Mozilla Observatory و SSL Labs تمرکزشان روی بخش‌های خاصی از امنیت است.

برای بررسی هدرهای امنیتی، پیشنهاد می‌کنم هدرهای امنیتی HTTP چه کاربردی دارند را بخوانید. این سرویس‌ها بهترین نقطهٔ شروع برای بررسی سریع امنیت سایت هستند.

محدودیت‌های اسکنرها

اگرچه اسکنرها بسیار مفید هستند، اما محدودیت‌های مهمی دارند که باید در نظر بگیرید:

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

اگر با مفهوم Zero Day آشنا نیستید، آسیب‌پذیری Zero Day چیست توضیح کاملی ارائه می‌دهد. همچنین درک نحوهٔ اولویت‌بندی یافته‌های اسکن در چگونه آسیب‌پذیری‌ها را رتبه‌بندی و رفع کنیم به شما کمک می‌کند.

روش صحیح استفاده از اسکنرها

اسکنر خوب، بخشی از یک فرآیند است، نه یک راه‌حل مستقل. روشی که در پروژه‌های خودم استفاده می‌کنم، بر پایهٔ چند اصل است:

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

روش‌های تکمیلی این تست در آموزش تست امنیت وب و چگونه آسیب‌پذیری سایت را پیدا کنیم آمده است.

تفسیر نتایج اسکن

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

  • ابتدا یافته‌های بحرانی و بالا را بررسی کنم
  • یافته‌های متوسط را بر اساس امکان بهره‌برداری و خسارت اولویت‌بندی کنم
  • یافته‌های پایین را در بازبینی دوره‌ای لحاظ کنم
  • یافته‌های مثبت کاذب را مستند کنم تا در اسکن‌های بعدی به‌عنوان یافتهٔ تازه دیده نشوند

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

آیا اسکنرها می‌توانند جایگزین متخصص امنیت شوند؟

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

با این حال، استفاده از اسکنرها برای هر سایت توصیه می‌شود، چون حتی ساده‌ترین یافته‌ها می‌توانند به حذف یک آسیب‌پذیری مهم منجر شوند. ترکیب اسکنر با بررسی دستی و دانش فنی، بهترین نتیجه را می‌دهد. مستندات ویکی‌پدیا در مورد Vulnerability scanner هم اطلاعات تخصصی خوبی ارائه می‌دهد.

پرسش‌های پرتکرار دربارهٔ اسکنرهای آسیب‌پذیری

آیا اسکنرهای رایگان به‌اندازهٔ اسکنرهای پولی مؤثر هستند؟ بستگی دارد. برای پروژه‌های کوچک، اسکنرهای رایگان مثل OWASP ZAP و WPScan پوشش خوبی دارند. برای سازمان‌های بزرگ و پروژه‌های پیچیده، ابزارهای تجاری معمولاً دقت و گزارش‌دهی بهتری ارائه می‌دهند.

چقدر طول می‌کشد یک اسکن کامل؟ به اندازهٔ سایت و تنظیمات اسکنر بستگی دارد. برای یک سایت کوچک، چند دقیقه تا یک ساعت. برای سایت‌های بزرگ با هزاران صفحه، ممکن است چندین ساعت یا حتی چند روز طول بکشد.

آیا اسکن روی سایت زنده بی‌خطر است؟ خیر. اسکنرهای تهاجمی می‌توانند باعث کندی سایت یا در موارد نادر، ناپایداری شوند. همیشه ابتدا روی محیط تست اسکن کنید.

آیا اسکنرها می‌توانند Zero Day را کشف کنند؟ نه. اسکنرها فقط آسیب‌پذیری‌های شناخته‌شده را تشخیص می‌دهند. Zero Day نیازمند رویکردهای پیشگیرانه و پایش رفتار است.

چند وقت یک بار باید اسکن کنم؟ برای سایت‌های پرمعامله، ماهانه. برای سایت‌های معمولی، هر سه ماه. بعد از هر تغییر بزرگ مثل افزودن افزونهٔ جدید یا تغییر ساختار، حتماً یک اسکن جدید انجام دهید.

سخن پایانی: ابزار مناسب در دست متخصص

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