فایروال برنامه های کاربردی تحت وب (WAF)

ماهیت برنامه‌های کاربردی

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

مهم ترین اصل در ارزیابی مناسب و دقیق از اقدامات دفاعی در مقابل حملات، شناخت دامنه مربوط به حملات مختلف می‌باشد.

شکل زیر نمای کلی از لایه‌های اصلی یک برنامه کاربردی معمول را نشان می‌دهد: لایه سرویس، TLS ،DNS، شبکه و لایه کنترل دسترسی

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

TLS

  • Encryption 
  • Certificate authorities

ACCESS CONTROL

  •  Authentication
  • Authorization
  • Identity 
  • Federation

SERVICES

  • App source code
  • Internal code
  • External code
  • Server-side infrastructure
  • Web server
  • CDN
  • Data storage
  • Server-side frameworks
NETWORK
  • Global ISPs 
  •   Internet routing

DNS

  •  DNS servers 
  • Registrars

لایه سرویس برنامه‌های کاربردی

 زمانی که اولین بار اینترنت به طور رسمی کار خود را شروع کرد، وب سایت‌ها به صورت صفحات استاتیک HTML و شامل لینک‌هایی بودند که بر روی سرورهایی منتشر می‌شدند. با ارایه استاندارد CGI برای ایجاد صفحات پویا و مبتنی بر ورودی‌های کاربر، تکنولوژی های توسعه برنامه‌های کاربردی تحت وب وارد عرصه جدیدی شدند. با ظهور برنامه‌های کاربردی پویا در کنار پیشرفت‌های ایجاد شده در این حوزه، راه برای افراد ناشناس و غیرمجاز برای تزریق کدهای مخرب در بین صفحات وب سایت‌ها هموارتر شد. این نقطه شروعی برای حملات مربوط به سرویس‌های تحت وب به حساب می‌آید.
 طبق گزارش Telemtry ارایه شده توسط آزمایشگاه‌های F5 در مورد TLS، وب سرور‌های Apache ،Nginx و IIS بیشترین محبوبیت را بین وب سروهای موجود دارند. در این بین وب سرور Apache رتبه اول را به خود اختصاص داده است. نکته اصلی در مورد وب سرورها این است که عملکرد درست برنامه‌های کاربردی تحت وب وابستگی زیادی به سروری دارند که بر روی آن اجرا می‌شوند. به همین دلیل اکثر سرورها برای افزایش قابیلت‌های عملکردی خود از افزونه‌هایی مانند ماژول‌ها، پلاگین‌ها، اکستنشن‌ها و فریم ورک‌ها و کتابخانه‌های مختلف در ساختار خود استفاده می‌کنند. به طور معمول یک برنامه کاربردی تحت وب حداقل از یک یا چند افزونه در موجود در وب سرور استفاده می‌کند. این افزونه‌ها علاوه بر افزایش توان عملکردی سرور، باعث افزایش پیچیدگی و افزایش گستره حملات نیز می‌شود.

 لایه سرویس برنامه کاربردی شامل سه زیرلایه، معماری سمت سرور، فرم ورک سمت سرور و کد منبع برنامه کاربردی می‌باشد. کد منبع برنامه از دو زیر لایه Internal code و External code تشکیل می‌شود.

Internal Code

کدهای Internal قسمتی از برنامه کاربردی تحت وب است که عمل خاصی را انجام می‌دهد. این کد می‌تواند مربوط به برنامه اصلی (مانند کد مربوط به Microsoft SharePoint یا Salesforce) یا قسمتی از برنامه کاربردی باشد که مطابق با نیاز سازمان تغییر یا توسعه داده شده است.  

External Code

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

زیرساخت سرور 

زیرساخت سرور شامل سرورهای مستقلی است که وظیفه اصلی آنها پشتیبانی از برنامه‌های کاربردی است. این زیرلایه شامل سرور برنامه کاربردی، شبکه CDN، برنامه کاربردی، پایگاه داده و فایل سرور می‌شود. این زیرلایه نسبت به کدهای خارجی لینک شده به برنامه کاربردی از یکپارچگی بالایی برخوردار است. به همین دلیل Patch کردن و بالانس سرورها بسیار راحت تر انجام می‌گیرد. در حال حاضر این زیرلایه بیشترین آمار حملات DDoS لایه اپلیکیشن و با هدف ایجاد اختلال در سرویس دهی را داراست. 

لایه کنترل دسترسی

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

لایه TLS

لایه انتقال امن، رمزنگاری لازم برای بسته‌های عبوری از شبکه‌های ناامن مانند اینترنت و شبکه های وای فای عمومی را فراهم می‌کند. کپسوله سازی بسته‌های رمز شده معمولا در سرور برنامه کاربردی انجام می‌شود و اثر آن تا کاربر نهایی باقی می‌ماند. TLS علاوه بر شناسایی برنامه‌های کاربردی دارای گواهی معتبر، قادر به تشخیص دستکاری در داده های انتقالی توسط هکرها نیز می ‌اشد. این لایه شامل پروتکل‌های معمول HTTPS و TLS و پروتکل منسوخ شده SSL می‌باشد.

لایه DNS

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

لایه شبکه

 کاربران در اغلب مواقع برای اتصال و استفاده از برنامه های کاربردی از زیرساخت اینترنت استفاده می‌کنند. پروتکل HTTP یکی از پروتکل‌های معمول برای ترافیک‌های وب می‌باشد که برای سایت‌های عمومی یا فراخوانی APIها بین دو دستگاه استفاده می‌شود. در برنامه‌های کاربردی حساس، ارتباطات از طریق پروتکل HTTPS رمزگذاری می‌شود.
لایه شبکه شامل کلیه سرویس‌های شبکه‌ای مورد نیاز برنامه‌های کاربردی از سرویس دهندگان اینترنت (ISPها) تا کلیه اتصالات از ISP تا محل مشتری و حتی پروتکل‌های روتینگ نیز می‌شود.

رابط کاربری

 اکثر برنامه‌های کاربردی به صورت سروری و بر روی محیط مجازی یا فیزیکی اجرا می‌شوند و برای ارسال و دریافت اطلاعات نیازمند رابط کاربری می‌باشند. در حال حاضر شما نمی‌توانید برنامه کاربردی پیدا کنید که نیازی به اتصال به اینترنت نداشته باشد.
 مرورگرهای وب از معمول‌ترین رابط‌های کاربری تحت وب هستند که اکثر برنامه‌های کاربردی تحت وب از آنها استفاده می‌کنند. مرورگرهای وب برای اولین بار در سال 1993 توسط موسسه بین المللی (NCSA) برای برنامه‌هایی با نیازهای پردازشی بالا ارایه شدند. در حال حاضر اکثر برنامه‌های کاربردی تحت وب انتظار دارند رابط‌های کاربری از اجرای اسکریپت‌های فعال مانند جاوا اسکریپت و فلش پشتیبانی نمایند.
طبق آمار موجود تعداد برنامه‌های کاربردی که به صورت اسکریپت‌های فعال و در مرورگر اجرا می شوند، افزایش چشمگیری داشته است. در این فرایند کاربر و مروگر از طریق پروتکل HTTP با هم ارتباط برقرار می کنند و با استفاده از آن اطلاعات و دستورات اجرایی را برای پردازش ارسال و دریافت می‌کنند. این نوع عملکرد در کنار تسهیل توسعه برنامه‌های کاربردی، باعث ایجاد نگرانی‌های امنیتی جدید برای تست و پیشگیری از آسیب پذیری‌های امنیتی شده است. علاوه بر موارد ذکر شده مفسرهای کد نیز لایه جدیدی از مسائل امنیتی را بدلیل سختی اولویت بندی نتایج بدست آمده و تمایز کدهای برنامه از ورودی‌های کاربران ایجاد کرده اند.
علاوه بر موارد ذکر شده رابط های کاربری شامل برنامه‌های موبایلی نیز می‌شود که به صورت مرورگرهای تحت وب و با تنظیمات پیشفرض بر روی دستگاه های موبایلی قابل اجرا می باشند. برنامه ها و تجهیزات IoT برای ارسال، دریافت و پردازش اطلاعات خود اغلب برنامه‌های کاربردی دیگر را فراخوانی می‌کنند. این کار معمولا از طریق APIها انجام می‌شود.

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

ACCESS CONTROL
  • Credential theft 
  • Credential stuffing
  • Session hijacking
  • Brute force
  • Phishing

APP SERVICES

  •  API attacks
  • Injection
  • Malware
  • DDoS
  • Cross-site scripting
  • Cross-site request forgery
  • Man-in-the-middle
  • Abuse of functionality

 

Client

  • Cross-Site Scripting
  • Cross-site request forgery
  • Man-in-the-browser
  • Session hijacking
  • Malware

Network

  • DDoS
  • Eavesdropping
  • Protocol abuse
  • Man-in-the-middle

DNS

  • Man-in-the-middle
  • DNS cache poisoning
  • DNS spoofing
  • DNS hijacking
  • Dictionary attacks
  • DDoS

TLS

  •  DDoS
  • Protocol abuse
  • Session hijacking
  • Certificate spoofing

 

فایروال برنامه‌های کاربردی تحت وب (WAF)

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

با وجود این اکثرا در طراحی همه برنامه‌های کاربردی این قواعد رعایت نمی‌شود. با وجود اینکه موضوع داشتن IDS ،IPS و فایروال در شبکه برای حفاظت از وب سرورها در مقابله با حملات، امری بسیار حیاتی است. اما متاسفانه هیچ یک از این تجهیزات قادر به تشخیص و جلوگیری از حملاتی مانند Sql injection، انواع حملات XSS و حملات Session hijacking نمی‌باشند. بنابراین برای حفاظت از سرورها و برنامه های کاربردی تحت وب، نیاز به فایروال تخصصی می‌باشد.  

در حال حاضر حملات وب اصلی‌ترین عامل نقض امنیت اطلاعات در سازمان‌ها به حساب می‌آید. براساس گزارشات ارایه شده در سال 2017 بیش از نیمی از برنامه‌های کاربردی در برابر حملات و آسیب پذیری‌های شناخته شده ایمن نمی‌باشند. وظیفه اصلی WAFها پوشش آسیب پذیری‌های برنامه‌های کاربردی برای جلوگیری از حملات و نقض اطلاعات در لایه اپلیکیشن می‌باشد. WAFها با ارایه امنیت مورد نیاز در برابر بات‌های مخرب، رمزنگاری در لایه اپلیکیشن، بررسی رابط‌های برنامه‌های کاربردی (API) و همچنین آنالیز رفتاری موجودیت‌های مختلف به حفاظت از برنامه‌های کاربردی در برابر حملات وب کمک می‌کند.
 از آنجایی که مهاجمان اکثرا از ابزارهای خودکار برای اسکن آسیب پذیری‌ها، حمله به حساب‌های کاربری و حملات DoS استفاده می‌کنند، به همین دلیل سیستم‌های WAF از جمله F5 دارای سیستم دفاعی پیشگیرانه دربرابر بات‌ها می‌باشند که علاوه بر جلوگیری از حملات خودکار با ترکیب تکنیک های چالشی و آنالیز رفتاری برای شناسایی و فیلتر کردن ترافیک‌های بات‌ها استفاده می‌کند.

با توجه به این که 75 درصد از حملات مربوط به نقض امنیت اطلاعات در لایه اپلیکیشن با حمله به اطلاعات هویتی کاربران و سرویس ها آغاز می شود، WAFها با رمز کردن داده‌ها و اطلاعات کاربری در لایه اپلیکیشن و بدون نیاز به بروز رسانی برنامه کاربردی از این نوع حملات جلوگیری می‌کنند. ماژول Datasafe فایروال F5 از جمله ماژول‌هایی است که کلیه داده‌های عبوری را رمز و ارسال می‌نماید.

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

تعدادی از ارایه دهنده گان فایروال‌های برنامه های کاربردی (WAF)

  • A10 Networks
  • Barracuda
  • Brocade
  • Citrix
  • F5
  • Fortinet
  • Imperva
  • Radware
  • SonicWall