CORE · مفاهیم سازوکار دفاعی

WAF — دیوار آتش برنامه‌ی وب

Web Application Firewall

فایروال برنامه‌ی وب (WAF) یک فیلترِ پروکسی‌مانند است که درخواست‌های HTTP را در برابر امضاها و قواعد بازرسی می‌کند — ابزاری مفید برای خریدِ زمان، اما نه جایگزینِ رفعِ آسیب‌پذیری در کد.

تیم فنی پی‌هانتر

WAF چیست و چطور کار می‌کند؟

فایروال برنامه‌ی وب (Web Application Firewall) یک فیلترِ معکوس‌پروکسی است که ترافیک HTTP ورودی و خروجی را در برابر امضاها، اکتشافات و قواعدِ نرخ/رفتار بازرسی می‌کند و درخواست‌های مشکوک را مسدود یا ثبت می‌کند. مرجعِ متن‌بازِ قواعد، OWASP Core Rule Set (CRS) است که با ModSecurity و WAFهای سازگار کار می‌کند؛ نسخه‌ی جاری آن ۴٫۲۸٫۰ است و نسخه‌ی ۴٫۲۵٫۰ نخستین نسخه‌ی پشتیبانی بلندمدت (LTS) خطِ CRS 4 تعیین شده است. علاوه بر CRS، WAFهای ابری (روی CDN) هم رایج‌اند.

دو مدلِ امنیتی وجود دارد: مدلِ منفی (فهرست سیاهِ الگوهای حمله؛ رایج‌تر) و مدلِ مثبت (فهرست سفیدِ رفتار مجاز؛ امن‌تر اما نگهداری‌اش سخت‌تر).

WAF واقعاً به چه دردی می‌خورد

  • خریدِ زمان در برابر CVE تازه‌منتشرشده: وصله‌ی مجازی تا زمانی که رفعِ واقعی مستقر شود — این بهترین کاربردِ توجیه‌پذیرِ WAF است.
  • مسدودکردنِ اسکنِ خودکار و ترافیکِ بهره‌برداریِ انبوه.
  • محدودسازی نرخ، مدیریت ربات و جذبِ DoS حجمی.
  • کاهش نویز تا حمله‌ی واقعی در لاگ بهتر دیده شود.
  • برخی الزامات انطباق (مثل PCI DSS) به آن ارجاع می‌دهند.

WAF چه چیزی را نمی‌گیرد

این بخش مهم‌ترین قسمتِ صفحه است. WAF در برابر کلاسی از آسیب‌پذیری‌ها ساختاراً نابیناست:

  • کنترل دسترسی شکسته و IDOR: WAF نمی‌داند کاربرِ شماره‌ی ۵ مجاز به دیدنِ رکوردِ شماره‌ی ۷ هست یا نه. این دسته‌ی شماره‌یکِ OWASP است و WAF نسبت به آن کور است.
  • نقص‌های منطق کسب‌وکار: دستکاری قیمت، پرشِ مراحلِ فرایند، سوءاستفاده از کوپن — همه درخواست‌هایی به‌ظاهر معتبر.
  • شرایط مسابقه: هر درخواست به‌تنهایی مشروع است.
  • SSRF: درخواستِ خروجی اصلاً از WAF عبور نمی‌کند.
  • بخش عمده‌ی DOM XSS: بار غالباً در قطعه‌ی #fragment آدرس است که هرگز به سرور فرستاده نمی‌شود و بهره‌برداری کاملاً سمت کلاینت رخ می‌دهد.
  • هر چیزی روی کانالِ رمز/کدگذاری‌شده‌ای که WAF رمزگشایی نمی‌کند: فریم‌های WebSocket، gRPC، بدنه‌های دودویی.
  • آسیب‌پذیریِ خودِ WAF؛ این دستگاه‌ها تاریخِ CVE خودشان را دارند.
باور غلط رایج

«WAF نصب کردیم، پس در برابر OWASP Top 10 امن هستیم» یا «برای رفعِ این آسیب‌پذیری یک WAF بگذارید.» هر دو نادرست‌اند. WAF یک کنترلِ جبرانی و زمان‌خر است، نه رفع. راه‌حلِ یک آسیب‌پذیریِ سطحِ کد، تغییرِ کد است؛ قاعده‌ی WAF حداکثر یک مهارِ موقتی است. در گزارش تست نفوذ، «WAF بگذارید» هرگز نباید به‌عنوان راهکارِ رفعِ یک باگِ کد نوشته شود.

WAF قابل دور زدن است

WAF علاوه بر نابیناییِ ساختاری، دور زدنی هم هست. کلاس‌های رایجِ دور زدن: کدگذاری و چندکدگذاری، تغییرِ حروف و افزودنِ کامنت، آلودگیِ پارامترِ HTTP، ترفندهای chunked، تعویضِ نوعِ محتوا، بدنه‌های بزرگ‌تر از حدِ بازرسیِ WAF، و desyncِ HTTP/2 و قاچاقِ درخواست. اما قابل‌اتکاترین «دور زدن» در عمل، یافتنِ IP اصلیِ سرورِ پشتی و اتصال مستقیم به آن است که کلاً WAFِ ابری را کنار می‌گذارد. تنظیمِ سطحِ سخت‌گیری (Paranoia Level) هم اغلب برای کاهشِ هشدارهای کاذب پایین آورده می‌شود و قواعد را ضعیف می‌کند.

تنظیم و هشدارهای کاذب

هر WAF بین دو خطا در نوسان است: مسدودکردنِ ترافیکِ سالم (False Positive) و اجازه‌دادن به حمله (False Negative). CRS با سطوحِ Paranoia این توازن را تنظیم می‌کند؛ سطحِ بالاتر امن‌تر اما پرهشدارِ کاذب‌تر است. در عمل، تیم‌ها زیرِ فشارِ هشدارهای کاذب اغلب قواعد را خاموش می‌کنند و همین، محافظت را تُهی می‌کند. به همین دلیل استقرارِ درستِ WAF نیازمندِ دوره‌ی یادگیری، تنظیم مداوم و پایش است — نه «نصب کن و فراموش کن».

ارتباط با OWASP

WAF یک آسیب‌پذیری نیست، یک کنترل است؛ در فهرست OWASP جایی ندارد اما با همه‌ی آن مرتبط است. نکته‌ی کلیدی برای هر ارزیابیِ امنیتِ سایت: WAF لایه‌ای از دفاعِ در عمق است، نه جایگزینِ کدِ امن. برای درکِ اینکه کدام دسته‌ها اصلاً از WAF عبور نمی‌کنند، به OWASP Top 10 مراجعه کنید.

پرسش‌های متداول

آیا WAF جای تست نفوذ را می‌گیرد؟

خیر. WAF یک فیلترِ ترافیک است و نسبت به کنترل دسترسی شکسته، منطق کسب‌وکار، شرایط مسابقه، بخش عمده‌ی DOM XSS و SSRF نابیناست. این‌ها فقط با تست نفوذ و رفع در کد پوشش داده می‌شوند.

آیا WAF قابل دور زدن است؟

بله. با کدگذاری، تعویض نوع محتوا، بدنه‌های بزرگ و ترفندهای HTTP می‌توان قواعد را دور زد، اما قابل‌اتکاترین راه، یافتنِ IP اصلیِ سرورِ پشتی و اتصال مستقیم است که کلاً WAFِ ابری را کنار می‌گذارد.

پس WAF بی‌فایده است؟

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

CRS چیست؟

OWASP Core Rule Set مجموعه‌ای متن‌باز از قواعدِ تشخیص حمله برای ModSecurity و WAFهای سازگار است؛ نسخه‌ی جاری ۴٫۲۸٫۰ و نسخه‌ی ۴٫۲۵٫۰ نخستین نسخه‌ی پشتیبانی بلندمدت خطِ CRS 4 است.

پیشگیری / رفع

استفاده‌ی درست از WAF:

  • WAF را به‌عنوان کنترلِ جبرانی و زمان‌خر ببینید، نه رفع. وصله‌ی مجازی برای CVE تازه، تا استقرارِ رفعِ واقعی.
  • هرگز «نصب WAF» را به‌عنوان راهکارِ رفعِ یک آسیب‌پذیریِ سطحِ کد در گزارش ننویسید؛ رفع، تغییرِ کد است.
  • مدلِ مثبت (فهرست سفید) را جایی که ممکن است ترجیح دهید و سطحِ Paranoia را آگاهانه انتخاب کنید.
  • IP اصلیِ سرورِ پشتی را از دیدِ عمومی مخفی کنید تا WAFِ ابری دور زده نشود (فقط از طریق CDN قابل دسترسی باشد).
  • WAF را به‌روز نگه دارید و برای آسیب‌پذیریِ خودِ آن هم برنامه داشته باشید.
  • WAF را با پایش و ثبت رخداد ترکیب کنید تا حملاتِ عبورکرده دیده شوند.
→ بازگشت به دانشنامه
PUT IT TO THE TEST

امنیت سامانه‌ی شما را
به مهاجمان واگذار نکنید

تیم پی‌هانتر با دیدِ یک مهاجم واقعی، این آسیب‌پذیری‌ها و ده‌ها مورد دیگر را روی دارایی‌های شما می‌سنجد.