امنیت و OWASP

سالهای پیش در یک شرکت فعال در زمینه برنامه نویسی کار می کردم آن زمان وقتی با مدیریت وقت درباره امنیت و seo و … بحث و گفتگو می کردم تنها به یک نتیجه ختم می شد : “خوبه ولی نیازی نیست”

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

 

و اما معرفی سایت مذکور

  OWASP.org

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

نام این سازمان مخفف عبارت Open Web Application Security Project می باشد.

 

OWASP امروزه متشکل از 9  پروژه  کوچک است که هر کدام بصورت جداگانه در خصوص یکی از موارد مرتبط با امنیت حوزه نرم افزارهای تحت وب فعالیت می کنند

  1. OWASP Application Security Verification Standard یا ASVS : استاندارد تایید امنیت نرم افزارهای کاربردی یا ASVS همانطور که از نام این پروژه پیداست برای دریافت تاییده برای نرم افزارهای وب در خصوص رعایت استاندارد های امنیت بکار گرفته می شود. بر طبق این استاندارد یک سری تست های امنیتی بر روی نرم افزار از قبلی Cross Site Scripting و SQL Injection و حملاتی از این قبلی انجام می شود و در صورت رعایت شدن این موارد در نرم افزار ، موفق به دریافت استاندارد می شوند.
  2. OWASP XML Security Gateway یا XSG : این استاندارد بصورت پایلوت فعلا ایجاد شده است و بصورت ویژه برای برقراری امنیت برای ساختار XML مورد استفاده قرار می گیرد.
  3. OWASP Development Guide : راهنمای توسعه نرم افزار برای برنامه نویسان وب ایجاد شده است و شامل یک سری نمونه کدهای کاربردی و تمثیلی از زبانهای برنامه نویسی مانند J2EE و ASP.NET و PHP می باشد. در این راهنمای برنامه نویسی و توسعه نرم افزارهای وب برنامه نویس با انواع و اقسام حملات تحت وب از قبیل SQL Injection و همچنین حملات جدیدتر شامل Phishing و حتی مباحث کارت های اعتباری و امنیت تبادلات الکترونیک ، Session Fixation و بسیاری دیگر از مسائل مهم اعم از مشکلات حریم خصوصی در وب سایت ها آشنا می شوند و به آنها در جهت رفع مشکلات احتمالی در خصوص این نرم افزار ها راهنمایی های لازم ارائه می شود.
  4. OWASP Testing Guide : همانطور که از نام این پروژه مشخص است راهنمایی برای تست و آزمون گرفتن از نرم افزارهای کاربری تحت وب است. این پروژه در واقع یک راهنمای مقدماتی برای برنامه نویسان وب می باشد تا بتوانند در پروژه های تست نفوذ سنجی به نرم افزارهای تحت وب از آن استفاده کرده و آن را معیار امنیتی خود قرار بدهند. در این راهنما تکنیک های مقدماتی نفوذ و حمله به نرم افزارهای تحت وب و سرویس های تحت وب تشریح شده است.
  5. OWASP Code Review Guide : راهنمایی برای مرور کدهای نوشته شده و مستند سازی کدهای نوشته شده می باشد که برنامه نویس بتواند پس از نوشتن یا توسعه نرم افزار کاربردی وب خود آن را آزمایش کرده و نقاط ضعف در کدهای نوشته شده را برطرف کند.
  6. OWASP ZAP Project : این پروژه یک نرم افزار تست نفوذ سنجی تقریبا ساده می باشد که برای انجام تست های نفوذ سنجی به نرم افزار های کاربردی تحت وب مورد استفاده قرار می گیرد. این ابزار برای استفاده برنامه نویسان و هکرهای قانومند بسیار مناسب و کاربردی می باشد.
  7. OWASP Top Ten : هدف از این پروژه اطلاع رسانی در خصوص مشکلات امنیتی نرم افزارهای تحت وب و هشدار دهی به سازمان ها در خصوص امنیت برنامه های تحت وب می باشد. در این پروژه انواع و اقسام مختلفی از ابزارها ، کد ها ، راهنماها و … معرفی و استفاده می شود.
  8. OWASP Software Assurance Maturity Model یا SAM : این پروژه یک راهنما برای سازمان ها است تا بتوانند یک چارچوب درست امنیتی و تحلیل امنیتی برای نرم افزارهای تحت وب خود ایجاد کنند تا بتوانند با مشکلات امنیتی نرم افزارهای کاربردی تحت وب و ریسک های آن بصورت هدفمند و روشمند مقابله و برخورد کنند.
  9. Webgoat : این پروژه یک نرم افزار کاربردی تحت وب می باشد که تمامی نقاط ضعفی که تا به حال توسط OWASP شناخته شده اند را بصورت مجازی و در قالب یک محیط برنامه نویسی شده شبیه سازی و در اختیار برنامه نویسان قرار می دهند.افرادی که با انواع حملات آشنایی پیدا کرده اند ولی می خواهند آن را بصورت عملی درک کنند کافیست این نرم افزار را دانلود کرده و آن را نصب و از طریق راهنمای آن تمامی حملات را بصورت شبیه سازی شده انجام دهند.

 

همانطور که در  گزینه  7 مطرح شد این سازمان هر چند سال یک مرتبه لیستی از شاخص ترین آسیب پذیری های متداول در نرم افزار ها و سرویس های ارائه شده تحت وب در سر تاسر جهان را از طریق مستندی ارائه می کند که این لیست مبنای امنیتی نرم افزارهای تحت وب به شمار می رود. برای مشاهده می توانید اینجا کلیک کنید. تا قبل از نوشتن این مطلب آخرین بار این لیست در سال 2013 ارائه شده است.

هدف از معرفی این سازمان و فعالیت های آن ، بررسی آیتم های OWASP Top Ten و ارائه راه حل های آن ها در ASP.NET MVC و سایر موارد مربوط به امنیت در وب سایت های مبتنی بر  ASP.NET MVC می باشد.

ابتدا لیست 10 نقطه آسیب پذیر که طی سالهای پیش ، در حملات بیشتری نسبت به سایر نقاط آسیب پذیر مورد استفاده قرار گرفته اند:

  1. Injection : در این نوع خطا ، عباراتی جزو دستور و یا جزو بخشی از url ارسال می شود که می تواند به سرور ، دیتابیس و یا برنامه ما لطمه وارد کند. این عبارات می توانند دسترسی های زیادی به یک بیننده عادی اعطا نموده و سیستم را دچار مشکل نمایند
  2. Broken Authentication and Session Management : در این ایراد برنامه نویس کنترل کامل و صحیحی بر روی دسترسی ها نداشته و در مدیریت وضعیت فعلی یک کاربر (session) نیز معایبی دارد و حمله کننده می تواند اطلاعات یک کاربر را دزدیده و بدون داشتن رمز عبور کاربر وارد پنل کاری کاربر شود.
  3. Cross-Site Scripting : این ایراد در برنامه هایی رخ می دهد که اطلاعات نامطمئن را دریافت کرده و آنرا بدون بررسی بر روی htlm خروجی ارسال می کنند. در این حمله می توان با اجرای script بر روی مرورگر قربانی اطلاعات session کاربر را دزدید و یا بازدیدکننده را به سایت دیگری هدایت کرد
  4. Insecure Direct Object References : در این نوع حمله، مهاجم می تواند مستقیم و بدون شناسایی به اشیاء مورد نظر دسترسی داشته باشد.
  5. Security Misconfiguration :امنیت عالی تنها امنیت در برنامه نویسی نیست بلکه شامل موارد امنیتی دیگری از قبیل frameworks, application server, web server, database serverو سیستم عامل می باشد.تنظیمات امنیتی برای تمامی این عناصر باید تعریف و اجرا شده باشد و نبایستی تنظیمات آنها را در همان وضعیت اولیه  (default) رها نمود.
  6. Sensitive Data Exposure : اغلب وب سایتها اطلاعات مهم از قبیل شماره حساب و یا رمز کاربران بصورت ساده و ناامن در خود نگهداری می کنند. و ارسال نامطمئن این اطلاعات در لایه های برنامه امکان دزدیدن این اطلاعات مهم را بالا می برد
  7. Missing Function Level Access Control : در برخی از سایت ها تنها اینکه کاربر login کرده دقت می شود و اینکه کاربر login کرده به کدامیک از آدرسهای بخش مدیریت دسترسی ندارد چندان اهمیتی داده نمی شود.
  8. Cross-Site Request Forgery :در این نوع از حمله، مهاجم مجبور است از طریق مرورگر قربانی ایکه در یک سیستم login کرده درخواست جعلی ارسال کند
  9. Using Known Vulnerable Components : امروزه استفاده از کامپوننت در برنامه نویسی رشد زیادی داشته و استفاده از کامپوننت های ضعیف و آسیب پذیر نیز در سال 2013 به لیست 10 آیتم اضافه شده است
  10. Unvalidated Redirects and Forwards : وب سایت شما بطور متناوب از صفحه ای به صفحه دیگر redirect  شده و یا کاربری به صفحه دیگری forward می شود. اگر برای انتقال اطلاعات آشکاری جهت تشخیص مقصد ارسال شود این اطلاعات می تواند توسط یک مهاجم دستکاری شده و مورد سوء استفاده قرار گیرد.

 

در ادامه به بررسی موردی تک تک این نقاط آسیب پذیر و راه کار حل مشکل آنها در ASP.NET MVC خواهم پرداخت.

 

درباره‌ رضا رحیمی

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

۳ نظر

  1. سلام از وسعت نظر و لطف شما نسبت به هم نوعان متشکرم من که اصلا نمی دانم به چه چیزی علاقه دارم.

  2. sسلام موفق باشید از اینکه مطالب مفید برای دیگر هموطنانتان به اشتراک میگذارید بی نهایت سپاسگزارم بند کارشناسit در استان فارس هستم خوشحال میشم از مطالب شما بیشتر استفاده کنم

  3. مطالب و تحربیات بسیار عالیــــــــــــــــــــ دارید
    ممنونــ از شما

جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*