توسعه و مدیریت نرمافزار ابدا کار سادهای نیست. با توجه به اینکه یک سیستمعامل میتواند بیش از 50 میلیون خط کد داشته باشد، به منظور کمک به Developerها در جهت مقابله با چالشهای امنیتی نرمافزاری، این افراد می توانند وارد پروژه ی Open Web Application Security Project یا به اختصار OWASP شوند. این سازمان از هزاران شرکتکنندهی فوقهوشمند تشکیل یافته است که در سطح جهانی با یکدیگر همکاری مینمایند. رسالت OWASP فراهم نمودن منابع رایگانی است که سازمانها بتوانند از طریق آنها برنامههای کاربردی و ایمن را شناخته، توسعه داده، در اختیار گرفته، اجرا و حفظ نمایند.
پس هنگام ارزیابی یک برنامه، آن را بر اساس مدل Software Assurance Maturity سازمان OWASP بررسی نمایید. لیست زیر خلاصهای از اقدام امنیتی برای به حداقل رساندن ریسک در نرمافزارهای داخلی و یا نرمافزارهای Third-Partyرا ارائه میدهد.
سازمان
- استراتژی و معیارها: علاوه بر ایجاد نمودن یک Roadmap امنیتی یکپارچه، Risk Tolerance (تحمل ریسک) منسجم تنظیم کرده و هزینهها را با توجه به منابع موجود همتراز کنید.
- آموزش و راهنمایی:آموزش Software Development Life Cycle یا به اختصار SDLC را به صورت ایمن و با Role خاص فراهم کنید.
- سیاست و تطابقپذیری: تطبیقپذیری درایورها را استخراج و سپس Gateهای انطباقپذیر را ایجاد کرده و همچنین برای فراهم نمودن شرایط ممیزی، دادههای مناسبی جمعآوری کنید.
ساختار
- ارزیابی تهدید: تهدیدات مختص به برنامه را شناسایی، ارزیابی و آنها را تا حد ممکن از بین ببرید.
- الزامات امنیتی: کنترلهای امنیتی لازم از جمله موافقتنامههای تامین کنندگان داخلی و بررسی این کنترلها را تعیین کنید.
- معماری امن: یک چارچوب توسعه نرمافزار اتخاذ کرده و علاوه بر شناسایی الگوهای طراحی ایمن، اصول Secure-By-Default را اعمال کنید.
تاییدیه
- بررسی طراحی: طراحی نرمافزار باید در مقابل مجموعهی جامعی از Best Practiceها مورد ارزیابی واقع شود.
- پیادهسازی: ابزار تجزیه و تحلیل خودکارِ کد، با فرایندهای پیادهسازی یکپارچه گشته و بررسی کد از نظر تعیین خطرات سطح برنامه و همچنین آسیبپذیریهای مختص برنامه، سفارشی شود.
- تست امنیتی: نیازمند تست نفوذ انسانی و تست خودکار مختص برنامه در سراسر فرایند پیادهسازی، علیالخصوص پیش از پیادهسازی می باشد.
عملیات
- مدیریت بحران: تیم مواجهه با آسیبپذیری ایجاد کرده و ضمن پیاده سازی فرایند افشای مسائل امنیتی (با در نظر گرفتن دریافت پاداش در ازای پیدا کردن Bug) و اجرای تجزیه و تحلیل عمیق و ریشهای، معیارهای مربوط به هر موضوع را جمعآوری کنید.
- امن سازی محیط: نسخههای بروزرسانی و Patchهای ضروری را نصب کرده، پیکربندی های موجود در شبکه را مانیتور کرده و همچنین ابزارهای حفاظت از شبکه را پیاده سازی کنید.
- امکان فعالسازی عملیات: ارتباطات میان تیمهای توسعه و اپراتورها را تسهیل داده، اطلاعات امنیتی اساسی را حفظ کرده و فرایندهای معمول برای ایجاد اخطار را نگهداری کرده و همچنین فرایندهای مدیریت تغییرات در هر انتشار و اجرای Code Signing را ایجاد کنید.
همانند سایر زمینههای مدیریت ریسک، اوج توسعه ایمن نرمافزار در زنجیره (پیوستگی) موجود میباشد که در مدل ارزان قیمت، فرایندها و ساختارها به صورت متناقض، ناکافی و ad hoc هستند و در نسخههای گران قیمت با یک فرایند تکراری قوی در سازمانها یکپارچه شده و در براساس استانداردهای صنعت اعتبارسنجی میشوند. برای شروع، مدیران کسبوکار ابتدا ریسک کلی سازمان را ارزیابی مینمایند که این امر تعیین مینماید که هم مهندسان داخلی نرمافزار و Vendorهای تکنولوژی، OWASP و فرآیندهای مشابه پیادهسازی کرده و هم اجزای ممیزی Third-Party را در مقابل آن دستورالعملها بکار گرفته باشند.
صرف نظر از رویکردی که سازمان اتخاذ نموده است، در نظر داشتن توصیههای OWASP بسیار حائز اهمیت میباشد: امنیت از الزامات غیرعملکردی بوده که میبایست بر روی هر برنامه یا ابزاری که برای اهداف تجاری یا دولتی مورد استفاده قرار میگیرد، قرار گرفته شود.
و سخن آخر اینکه، ممکن است مهندسان نرمافراز از طریق کدها سخن بگویند اما الزامات امنیتی نرمافزار، محرمانه نمیباشند.