بخشی از مقاله

" پیشگیری از آسیبپذیری برنامههای تحت وب با راهحلهای WAF و معرفی " ANNbWAF

چکیده

با حضور اینترنت و همگانی شدن آن، بحث امنیت یک موضوع مهم برای تمامی استفاده کنندگان میباشد. امروزه اکثر مدیران بخش امنیت اطلاعات ، بودجه زیادی را صرف خریداری سخت افزارهای امنیتی مانند UTM های امنیتی، فایروالها، سیستمهای تشخیص و جلوگیری از نفوذ و مشابه اینها میکنند. در این حوزه راهکارهای زیادی جهت ایمنسازی اطلاعات مورد استفاده قرار میگیرد که عمومیترین آنها فایروالهای کامپیوترهای شخصی و فایروالهای شبکه میباشند که در کشورمان انواع مختلفی از آنها همچون Pix، Cyberoam، Fortinet، ISA و Juniper وجود دارد. با روند روبه رشد استفاده از نرمافزارهای تحت وب و با توجه به اینکه بیش از %75 حملات در اینترنت، حملاتی است که در لایه برنامههای کاربردی صورت میپذیرند ، فایروالی که برای جلوگیری و دفاع در برابر این نوع حملات طراحی شدهاند، 1WAF نام دارند. WAFها به عنوان IDS/IPS لایه 2 7 عمل می کنند ولی تفاوت بسیاری با IDS/IPS شبکه دارند. موفقیت ANN3 در سیستمهای تشخیص نفوذ ، راهی در طراحی یک راه حل جدید برای WAF و حل برخی محدودیتها مثل: توانایی یادگیری و ذخیرهسازی دانش تجربی؛ غیرخطی بودن ; ANN توانایی تولید راهحل؛ توانایی تطبیق در زمان عوض شدن مفهوم4 ;عملکرد محاسباتی;5 و ساختار گسترده موازی ANN ، مورد بحث این مقاله میباشد.

واژههای کلیدی: امنیت برنامههای کاربردی ، فایروال ، فایروال برنامههای کاربردی تحت وب ، ANNbWAF ، WAF


-1 مقدمه

در بسیاری از مواقع با خرید و تجهیز شبکههای رایانهای دستیابی نفوذ گران و نفوذ گران اینترنتی به شبکهها غیر ممکن میشود، اما در پس پرده اتفاقات دیگری در جریان است. سازمانی را تصور کنید که سرور وب آن در داخل سازمان است. اگر یک نفوذ گر به آن سیستم نفوذ کرده و دسترسیهای لازم را کسب نماید، به عنوان یک کاربر در شبکه محسوب میشود. با این توصیفات هزینههای چند ده میلیونی سازمان برای خرید و تجهیز فایروالها و سایر سیستمهاعملا بی فایده بوده و موارد امنیتی تعبیه شده به اصطلاح دور زده6 شدهاند.
در این تحقیق یک راه امنیتی با استفاده از شبکه عصبی مصنوعی ارائه شده که برنامههای تحت وب را در مقابل حمله Sql Injection محافظت میکند. این راه روی چندین dataset آزمایش شده و نتیجه امیدوارکننده ای داشته است. همچنین این راه روی یک WAF نمونه که به نام ANNbWAF خوانده می شود نیز توسعه داده شده است.
برای فراهم کردن ماکزیمم ایمنی برای برنامههای کاربردی تحت وب راهحلهای مشخصی برای پیادهسازی وجود دارد. یکی از این راهحلها WAF می باشد. اغلب WAF ها بر مبنای فیلتر درخواست کاربر در مقابل مجموعهای از قوانین امضاهای از قبل تعریف شده استوار هستند. توانائی کنترل تطبیق الگوها اساسآ با استفاده از ابزارهای متداول مثل ModSecurity که معروفترین WAF است حاصل میشود. به هر حال با توسعه روزافزون برنامههای کاربردی تحت وب شمار تهدیدها و حملهها به طور محیرالوقوعی در حال افزایش است در این راستا دیگر تکنیکهای تطبیق الگوی سنتی (عبارات متداول) کارساز نیست؛ و نیاز مبرم به اقتباس یک الگوی مناسب با استفاده از تکنولوژی روز که معیارهای امنیت عصر جدید را پوشش دهد، می باشد. با لیست کردن نیازهای امنیتی و نگرشهای جدید انتخاب آسانتر خواهد بود. در ابتدا نگرش جدید باید قیاس پذیر باشد یعنی عملکرد آن در مقابل تعداد روزافزون قوانین و امضاهائی که شامل درخواستهای نامناسب شناخته شده میباشد، درست باشد. همچنین باید به راحتی قابل بهروزرسانی باشد و کار کردن با آن راحت باشد. (پیچیدگی کمتر و استفاده از عبارات متداول) اضافه بر این باید با ماهیت ذاتی پویایی حملهها و مشخصههای کلیدی برنامههای تحت وب مثل تکنولوژیهای SQL Injection و همه تکنیکهای دور زدن آنها هم گام باشد. از آن مهمتر زمان فیلتر درخواست کاربر نباید روی عملکرد وب سرور تأثیر منفی بگذارد.با بررسی روشهای مهندسی که رویکردهای مشابهی دارند روشهایی کشف گردید کهدقیقا موارد ذکرشده را پوشش میدهند.


این رویکرد شبکه های عصبی مصنوعی (ANN) است. این مقاله به مفاهیم شبکه های عصبی و چگونگی پیاده سازی آنها در قالب web application firewall ها میپردازد. برای تمرکز روی منطبق کردن ANN در web application security framework نمونه های آزمایشی که در تحقیقات بررسی شدهاند حمله های Sql Injection با درگیری اندک حمله های Cross-site Scriptingمیباشد.
در نهایت این مقاله یک گام مهم در پذیرش نگـرش ANN در برنامه های کاربردی تحت وب می باشد که این گام پس از موفقیــت ANN در راهحــلهــای امنیــت شــبکه، مثــل سیستم های تشخیص نفوذ (که در این مقاله مورد بحث قرار خواهد گرفت) حاصل شده است. در بخش بعدی بـه معرفـی مهمترین حملات، مختصری از مفاهیم SQL injection و بررســی ترفنــدهای آن در دور زدن راه حــلهــای امنیتــی میپردازیم.

-2 نقطه ضعفهای برنامههای کاربردی تحت وب طبق آمار OWASP

همزمان با پیشرفتهای برنامه های کاربردی، نقطه ضعفهایی نیز در برنامهها ایجاد شده است. بر پایه یک بررسی آماری که از سوی کنسرسیوم امنیت برنامههای کاربردی7 انجام گرفته، بیش از 85 درصد از همه برنامههای وب در دنیا طبق این آزمایشهای نفوذ، آسیبپذیرند.
برای بالا بردن کیفیت و امنیت برنامههای وب، یک پروژه با نام Open Web Application Security Project پایهگذاری شده است .درون OWASP پروژه های کوچکتر زیادی وجود دارد که برای نمونه، OWASP Top Ten Projectیکی از آنهاست که همواره ده خطر اصلی تهدید کننده برنامههای وب را اعلام میکند.
هدف از این کار آن است که برنامهنویسان، طراحان و کاربران از نقطهضعفهای احتمالی برنامههای خود آگاه بوده و تا جای ممکن با اقدامات مناسب جلوی آنها را بگیرند . آخرین وضعیت لیست TopTen به شرح زیر است:

Injection Flaws -1

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

همچنین بسیاری از بانکهای اطلاعاتی اجازه اجرای فرمانهای سیستمی را به کاربر میدهند که این خطر نفوذ و نفوذ گری در بانک اطلاعاتی را باز هم افزایش میدهد.
اغلب به این نکته توجه نمیشود که سرویسدهند ههای بانکهای اطلاعاتی باید درون شبکه سازمان باشند .در نتیجه نفوذگرها میتوانند با یک ارتباط اینترنتی ساده که بسیاری از ملاحظات امنیتی در آن رعایت نشده به بانکهای اطلاعاتی متصل شوند.

Cross Site Scripting -2یاXSS

XSSتقریبا در همه برنامههای تحت وب دیده میشود. حفره های امنیتی XSS هنگامی دیده می شوند که یک برنامه بدون بررسی اینکه آیا باید کاراکترها در حالت کد شده به نمایش در آیند یا نه، دادههایی که از مرورگر کاربر دریافت کرده را به آن باز پس بفرستد .این به یک نفوذ گر این امکان را میدهد که بتواند برای نمونه اسکریپت های جاوا را روی کامپیوتر قربانی اجرا کند .این کد مخرب میتواند به همه اطلاعات وب دسترسی داشته باشد.
از جمله این کدها می توان از اطلاعات Session که در Cookieهاذخیره میشوند نام برد .به کمک JavaScriptمیتوان بخشی از یک سایت وب را دستکاری کرد یا به جای آن صفحه های دیگری را معرفی کرد .در حالت Login-Mask مشخصات فردی کاربر به فرد نفوذ گر فرستاده میشود و سپس کاربر به سیستم خود وارد میگردد .نقص XSS اغلب به عنوان وسیله ای برای Phishing به کار میرود که در آن از کاربران اطلاعات مهمی دزدیده میشود.
اگر در یک برنامه وب روی اطلاعات کاربری پردازشهایی صورت میگیرد، باید بسیار مراقب بود معمولا. حفاظت از نام کاربری و گذرواژه و همچنین اطلاعات ( Session-Tokens)Session در برابر نفوذگرها کافی نیست.
در این میان، Session-Token اهمیت بیشتری دارد . چون در اختیار داشتن آنها امکان دسترسی به منابع سیستمی را برای نفوذگرها فراهم میکند .سوء استفاده از نقاط ضعف عملیات تعیین صلاحیت کاربر همیشه سادهترین راه نیست بلکه نفوذگرها بیشتر روی استفاده توابع جانبی تعیین صلاحیت مانند، logoutیا Secret Question تمرکز میکنند .اگر استفاده از-Session Tokensفایده نداشته باشد، نفوذ گران تلاش میکنند تا با حمله های XSS یا Man-in-the-Middle،-Session Tokensرا به دست آورده و عملیات-Session Hijackingرا اجرا کنند.


Insecure Direct Object Reference -4

هنگام نوشتن برنامههای وب اغلب برای مراجعه به یک objectدرونی، از object reference ها استفاده میشود .این object ها میتوانند فایل ها، فهرستها، مدخلهای بانکهای اطلاعاتی یا کلیدها و امضاهای دیجیتالی باشند .اشکال Insecure Direct Object Referenceاز امکان دستکاری در ارجاع به این Objectها ناشی میگردد .فرد نفوذ گر میتواند با دستکاری در سیستم، به محتویات آن دسترسی پیدا کند . این حملهها به ویژه هنگامی که برنامه وب با دادههای مهمی سرو کار دارد، میتواند خیلی خطرناک باشد.

Cross Site Request Forgrey -5
در حمله هایCSRF از سوی کاربری که به درستی تعیین صلاحیت شده و به سیستم و شبکه وارد شده، درخواستیهایی صادر میگردد .برای نمونه ممکن است هنگامی که کاربری خود را به یک برنامه معرفی کرده و بدون قطع ارتباط، این برنامه را ترک کرده، در بار بعدی به صفحه مورد نظر نفوذ گر هدایت شود و سپس کد مخرب موجود در آن صفحه با دسترسیهای مجاز کاربر جاری به اجرا درآید .تشخیص و ردیابی اینگونه حملهها بسیار دشوار است .حمله هایCSFR امروزه خطرناکترین و بدترین حمله های وبی هستند.


Information Leakage and Improper Error -6
Handlingیا Security Misconfiguration

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

این نکته به ویژه درباره شماره نگارش ابزار نرم افزاری به کار رفته نیز صادق است، چون نفوذگرها میتوانند با دانستن شمارههای نگارش روالهای نرم افزاری درون برنامه، از نقاط ضعف آنها سوء استفاده کنند .حفاظت از اینگونه اطلاعات برای صاحبان و مسئولین برنامههای وب بسیار حیاتی است.

Insecure Cryptographic Storage -7
بسیاری از برنامه های وب، هیچ تابعی برای رمزگذاری اطلاعات و دادهها ندارند یا دارند ولی روش کارشان درست نیست .باید بدانید که وجود روالهای رمزگذاری در برنامههای وب برای رمزگذاری روی دادههای مهمی مانند نام کاربری و گذرواژه، شماره حساب بانکی یا-Session Tokensضروری است .البته حتی وجود روالهای رمزگذاری نیز نمیتواند خیال ما را از دسترسی نفوذگرها به دادهها آسوده کند.
چون گاهی برخی از برنامه نویس ها از الگوریتمهای ابداعی کهمعمولا ضعیفترند یا الگوریتمهایذاتا ضعیف
مانند SHA-1 یا MDS استفاده میکنند یا حتی الگوریتمهای خیلی مطمئن را با شیوه ای نادرست به کار میبرند که در نتیجه شکستن و عبور از آنها کار دشواری نخواهد بود .از این گذشته گاهی کلیدهای رمزگذاری در جاهایی نامناسب مانند خود برنامهها نگهداری میشود که باید از این نیز پرهیز کرد.

Failure to Restrict URL Access – 8

یکی از راههای متداول برای حفاظت از دادههای مهم در برنامههای وب آن است که URL مربوط به کاربر به نمایش در نمیآید چون با دانستن URL میتوان به آن حمله کرد.
اما رایجترین روش حمله که از این نکته سوء استفاده میکند Forced Browsing نام دارد .در این روش، فرد نفوذ گر سعی میکند تا با آزمایش های پی در پی، آن بخش از محتویات صفحه یا تابع برنامه را که از آنها حفاظت نشده شناسایی کرده و رخنه را از راه آنها آغاز کند .هدف اصلی از این کار یافتن فایل ها و URL های پنهان است. اینگونه نقاط ضعف برای مسئولین برنامه بسیار خطرناک است چون نفوذ گر از این راه میتواند به ساختار برنامه پی برده و حتی اختیارات مدیر سیستم را به دست بیاورد.
Insecure Communications – 9 یا Insufficient Transport Layer Protection
این اشکال از آنجا ناشی میشود که دادههای مهم یا بدون رمزگذاری یا با رمزگذاری ضعیف روی کانالهای ارتباطی فرستاده شوند.در این حالت، نفوذگرها میتوانند با گوش دادن به مسیر یا حمله های Man in the Middle به دادهها دسترسی پیدا کنند.
به ویژه هنگام انتقال دادههای مهمی مانند شماره حسابهای بانک و نامهای کاربری و گذرواژه ها، مسیرهای ارتباطی باید با بهترین روشها رمزگذاری بشوند .دیده شده که برخی برنامههای وب تنها دادههای Login را روی مسیرهای مطمئن انتقال میدهند و بقیه دادهها را همچون Session-Tokensرا روی مسیرهای معمولی منتقل میکنند.

این کار به نفوذگرها این امکان را میدهد که با گوش دادن به مسیر و به دست آوردن اطلاعات لازم با هویتی ساختگی به سیستم رخنه کرده و از دادههای درون آن سوء استفاده کنند.

Malicious File Execution -1 یا Failure by applications to encrypt network traffic containing sensitive communications.

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

نتیجه :
OWASP Top Tenراهنمای خوبی درباره خطرناکترین نقاط ضعف برنامه وب در هر لحظه است .در سایت این مجمع ( (wwwowasp.org گذشته از جزئیات مفصل در این موضوع، از دیگر خطرهایی که برنامه وب را تهدید میکنند و همچنین راههای رویارویی با آنها صحبت شده، ضمن اینکهOWASP نکاتی که باید از همان آغاز طراحی برنامههای وب به آنها توجه شود را نیز شرح داده است.
برنامهها و اطلاعاتی که OWASP عرضـه مـیکنـد، همگـی توافقنامه های Free and Open Source هستند و در نتیجـه استفاده از آنها برای همه آزاد است.


-3 حفرههای دیوارههای امنیتی

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

شکل – 1 حفرههای لایههای امنیتی

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

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید