بخشی از مقاله

چکیده

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

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

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

مقدمه

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

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

به این منظور ابتدا باید در رابطه با تهدیدات مختلف بر روی این بستر صحبت کرد و برای شناسایی تهدیدات نیاز است که بخشهای مختلف بستر وب در زمان استفاده کاربران مورد بررسی قرار گیرد.

امنیت نرمافزارها در بستر وب

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

از این رو، شرکتهای نرم افزاری باید نرمافزارهایی تولید کنند که قابل اعتماد کردن باشند. در کل بر اساس تعریف ارائه شده از امنیت، وظایف شرکتهای تولیدکننده نرمافزار برای ایجاد این اعتماد را به 2 دسته کلی میتوان تقسیم کرد: پیشگیری از نفوذ و کشف تلاشهای صورتگرفته برای نفوذ. حدود 10 تا 15 سال پیش در ایران، »کشف تلاشهای صورت گرفته برای نفوذ« در شرکتهای نرمافزاری بسیار پر رنگ بود.

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

استانداردسازی نرمافزارها

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

در حال حاضر برای شرکتهای تولیدکننده نرمافزار ایرانی، شناخته شدهترین استانداردهای جهانی در حوزه پیشگیری، استاندارد ASVS است که توسط انجمن غیرانتفاعی OWASP تولید و منشر میشود و برای بحث رویکرد کشف تلاش برای نفوذ، چارچوبی به نام»معیار مشترک« ایجاد شده است که زیرمجموعهای از استاندارد ISO محسوب میشود. به صورت خلاصه، انجمن OWASP انواع حملات در بستر وب را در 10 دستهبندی کلی، تقسیمبندی کرده و راههای جلوگیری از این حملات را بیان کرده است و سپس استانداری به نام ASVSارائه کرده است که طی آن، میتوان نرمافزارها را بر اساس امنیت آنها مورد ارزیابی قرار داد.

همچنین چارچوب »معیار مشترک« شرکتهای نرمافزاری را سطحبندی کرده است و فرایندی را تدوین کرده است که طی آن شرکت های نرم افزاری می توانند نرم افزار های تولیدی خود را امن نمایند و پس از آن فرایند تولید نرم افزار را نیز امن نمایند. این چارچوب با استفاده از پروفایلهای حفاظتی مجزا برای هر بستر نرمافزاری، الزامات امنیتی معرفی کرده است که بیشتر این الزامات رویکرد مدیریت و کشف نفوذ را دنبال میکنند.

انجمن OWASP شیوه مهم و معروف از حملات به نرمافزار های وبی را ارائه داده است. این انجمن این کار را در بازه های زمانی مختلف انتشار می دهد و در حال حاضر که در حال تهیه این مقاله هستم نسخه های 2010 و 2013 این 10 شیوه منتشر شده است و نسخه 2017 آن کاندید انتشار - RC - است. بنابراین با توجه به اینکه نسخه 2017 هنوز انتشار نهایی نشده است و احتمال تغییرات در آن وجود دارد در این مقاله 10 نوع حمله نسخه 2013 بیان می شود؛ البته باید این را عنوانکرد که بسیاری از شیوههای حمله با توجه به اینکه هنوز بسیار مورد استفاده هکرهاست بین دو نسخه مشابه است. شیوههای معروف حملات به شرح زیر دستهبندی شده است:

-   تزریق

-  شکسته شدن احراز هویت و مدیریت نشست

-    تزریق اسکریپت از طریق سایت - - XSS

-    ارجاع مستقیم به اشیا به صورت ناامن

-   پیکربندی اشتباه امنیت

-    افشای دادههای حساس

-    از دست رفتن کنترل دسترسیها در سطح توابع

-   درخواستهای تقلبی از طریق سایت - - CSRF

-    استفاده از مولفههای جانبی با آسیب پذیریهای شناخته شده

-    تغییر مسیرها و ارجاعات نامعتبر

در ادامه هر یک از این نوع حملات به صورت خلاصه توضیح داده شده است.

تزریق

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

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

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