ایجاد یک برنامه امنیت برنامه مدرن (Establishing a Modern Application Security Program)
لیستهای OWASP Top Ten اسناد آگاهیبخشی هستند که هدفشان جلب توجه به مهمترین ریسکها در حوزه امنیت برنامه است. این لیستها فهرست کامل نیستند و صرفاً نقطه شروع محسوب میشوند. نسخههای قبلی نشان دادهاند که شروع یک برنامه امنیت برنامه بهترین راه برای کاهش این ریسکها و دیگر خطرات مرتبط است.
در این بخش، نحوه شروع و ساخت یک برنامه امنیت برنامه مدرن توضیح داده میشود.
ارزیابی بلوغ موجود
اگر از قبل برنامه امنیت برنامه دارید، میتوانید با استفاده از:
بلوغ برنامه خود را ارزیابی کنید. این مدلها جامع هستند و به شما کمک میکنند تمرکز خود را برای توسعه و بلوغ برنامه مشخص کنید. توجه داشته باشید که اجرای تمام موارد SAMM یا DSOMM لازم نیست؛ این مدلها صرفاً راهنما هستند و گزینههای متعددی ارائه میدهند.
اگر برنامه امنیت را از صفر شروع میکنید یا SAMM/DSOMM فعلاً برای تیم شما سنگین هستند، توصیههای زیر را دنبال کنید:
1. اتخاذ رویکرد مبتنی بر پرتفوی ریسک (Risk-Based Portfolio Approach)
- شناسایی نیازهای حفاظتی برنامهها از منظر کسبوکار، با توجه به قوانین حفظ حریم خصوصی و مقررات دادهها.
- ایجاد مدل ارزیابی ریسک مشترک با مجموعهای ثابت از عوامل احتمال و تأثیر که بازتابدهنده میزان تحمل ریسک سازمان باشد.
- اندازهگیری و اولویتبندی تمام برنامهها و APIها و افزودن نتایج به Configuration Management Database (CMDB).
- تعیین دستورالعملهای اطمینان (Assurance Guidelines) برای تعریف پوشش و سطح سختگیری لازم.
2. ایجاد پایه قوی (Enable with a Strong Foundation)
- تدوین سیاستها و استانداردهای متمرکز برای ایجاد خط پایهٔ امنیت برنامه برای تیمهای توسعه.
- تعریف کنترلهای امنیتی قابل استفاده مجدد که این سیاستها را تکمیل کرده و راهنمای طراحی و توسعه ارائه دهند.
- ایجاد برنامههای آموزشی امنیت برنامه برای نقشهای مختلف توسعه و موضوعات مرتبط.
3. ادغام امنیت در فرایندهای موجود (Integrate Security into Existing Processes)
- تعریف و ادغام فعالیتهای امنیتی در فرایندهای توسعه و عملیاتی موجود.
- فعالیتها شامل: مدلسازی تهدید، طراحی امن، بازبینی طراحی، برنامهنویسی امن، بازبینی کد، تست نفوذ و رفع آسیبپذیری.
- ارائه کارشناسان موضوعی و خدمات پشتیبانی برای موفقیت تیمهای توسعه و پروژه.
- مرور چرخه حیات توسعه سیستم فعلی و تمام فعالیتها، ابزارها، سیاستها و مستندسازی آنها.
- برای نرمافزار جدید، یک یا چند فعالیت امنیتی به هر فاز SDLC اضافه کنید.
- برای نرمافزار موجود (Legacy)، برنامه نگهداری رسمی داشته باشید.
4. آموزش امنیت برنامه (Application Security Education)
- راهاندازی برنامه Security Champion یا آموزش عمومی امنیت برای توسعهدهندگان جهت آگاهی کامل از ریسکها.
- OWASP از طریق OWASP Security Champions Guide پشتیبانی میکند.
- پروژه OWASP Education Project منابع آموزشی ارائه میدهد.
- پروژههای عملی:
- OWASP Juice Shop
- OWASP WebGoat
- شرکت در کنفرانسها و آموزشهای OWASP:
- OWASP AppSec Conference
- OWASP Conference Training
- OWASP Chapter Meetings
5. فراهم کردن دید مدیریتی (Provide Management Visibility)
- ارائه Metrics برای تصمیمگیریهای بهبود و تخصیص بودجه بر اساس دادهها و تحلیلها.
- معیارها شامل رعایت فرآیندهای امنیتی، آسیبپذیریهای ایجاد و رفع شده، پوشش برنامهها، چگالی خطاها و تعداد نمونهها هستند.
- تحلیل دادهها برای شناسایی ریشههای آسیبپذیری و بهبود راهبردی در سازمان.
- یادگیری از اشتباهات و ارائه مشوقهای مثبت برای بهبود مستمر.
ایجاد و استفاده از فرآیندهای امنیتی تکرارشونده و کنترلهای استاندارد
مرحله مدیریت نیازمندیها و منابع (Requirements and Resource Management Phase)
- جمعآوری و مذاکره نیازمندیهای کسبوکار، شامل حفاظت از حریم خصوصی، اصالت، یکپارچگی و دسترسی داراییها.
- تدوین نیازمندیهای فنی شامل امنیت عملکردی و غیرعملکردی، با استفاده از OWASP ASVS بهعنوان راهنما.
- برنامهریزی و مذاکره بودجه که تمام مراحل طراحی، ساخت، تست و عملیات امنیتی را پوشش دهد.
- افزودن فعالیتهای امنیتی به برنامه زمانی پروژه.
- معرفی خود به عنوان نماینده امنیت در آغاز پروژه.
درخواست پیشنهادات (RFP) و قراردادها
- مذاکره نیازمندیها با توسعهدهندگان داخلی یا خارجی، شامل SDLC و بهترین شیوههای امنیتی.
- ارزیابی تحقق نیازمندیهای فنی در فاز برنامهریزی و طراحی.
- استفاده از قالبها و چکلیستها، مانند OWASP Secure Software Contract Annex.
- توجه: این پیوست براساس قوانین قرارداد آمریکا است؛ پیش از استفاده، مشاوره حقوقی دریافت کنید.
مرحله برنامهریزی و طراحی (Planning and Design Phase)
- مذاکره برنامهریزی و طراحی با توسعهدهندگان و سهامداران، مانند متخصصین امنیت.
- تعریف معماری امنیت، کنترلها، اقدامات متقابل و بازبینی طراحی با پشتیبانی متخصصین.
- طراحی امنیت از ابتدا بسیار بهصرفهتر است؛ از OWASP Cheat Sheets و OWASP Proactive Controls بهعنوان نقطه شروع استفاده کنید.
- انجام مدلسازی تهدید (Threat Modeling).
- آموزش مفاهیم و الگوهای طراحی امن به معماران نرمافزار.
- بررسی جریانهای داده با توسعهدهندگان.
- افزودن Security User Stories همراه با دیگر User Stories.
چرخه توسعه امن (Secure Development Lifecycle)
- استفاده از OWASP SAMM برای بهبود فرآیند سازمان در ساخت برنامهها و APIها.
- آموزش کدنویسی امن و ارائه ابزارهای امنیتی به توسعهدهندگان:
- Static Analysis
- Software Composition Analysis
- Secret Management
- IaC Scanners
- ایجاد Guardrails برای تصمیمگیری امن، تنظیمات پیشفرض امن و ایجاد Paved Roads.
- بهرهگیری از OWASP Cheat Sheets و کنترلهای امنیتی استاندارد در فریمورکهای مدرن.
- ارائه پلاگینهای امنیتی IDE و ابزارهای مدیریت Secret و مستندات.
- ارائه AI خصوصی با سرور RAG برای فراخوانی ابزارهای امنیتی سازمان و آموزش استفاده ایمن از آن.
ایجاد تست امنیتی مداوم (Continuous Application Security Testing)
- تست عملکردهای فنی و یکپارچگی با معماری IT.
- ایجاد test cases از دیدگاه فنی و کسبوکار.
- مدیریت تستها طبق فرآیندهای داخلی، نیازمندیهای حفاظتی و سطح تهدید.
- ارائه ابزارهای تست امنیتی (Fuzzers، DAST و غیره) و آموزش نحوه استفاده از آنها.
- در صورت نیاز، انجام penetration test رسمی و تستهای استرس و عملکرد.
- همکاری با توسعهدهندگان برای رفع مشکلات گزارششده.
راهاندازی برنامه (Rollout)
- قرار دادن برنامه در عملیات و مهاجرت از برنامههای قبلی در صورت نیاز.
- نهاییسازی مستندات شامل CMDB و معماری امنیت.
عملیات و مدیریت تغییر (Operations and Change Management)
- ارائه دستورالعملهای مدیریت امنیت مانند Patch Management.
- افزایش آگاهی امنیتی کاربران و مدیریت تضاد بین امنیت و قابلیت استفاده.
- برنامهریزی و مدیریت تغییرات، ثبت همه برنامهها در Inventory و بهروزرسانی مستندات.
- اجرای Logging، Monitoring و Alerting برای همه برنامهها.
- تعریف SLA برای رفع باگهای امنیتی.
- ایجاد تیم پاسخ به حادثه آموزشدیده.
- اجرای ابزارهای Blocking یا Shielding، سختسازی پیکربندیها و تست نفوذ سالانه.
- بهروزرسانی برنامههای Continuity و Disaster Recovery.
بازنشستگی سیستمها (Retiring Systems)
- آرشیو دادههای ضروری و پاکسازی امن دادههای غیرضروری.
- بازنشستگی امن برنامه، شامل حذف حسابها، نقشها و دسترسیهای بلااستفاده.
- بهروزرسانی وضعیت برنامه در CMDB به "بازنشسته".
استفاده از OWASP Top 10 بهعنوان استاندارد
- OWASP Top 10 عمدتاً سند آگاهیبخشی است، اما بسیاری از سازمانها از آن بهعنوان استاندارد عملیاتی AppSec استفاده کردهاند.
- این سند نقطه شروع و حداقل استاندارد است. برخی ریسکها (مثل A06:2025-Insecure Design) ممکن است فراتر از قابلیت تست ابزارهای استاندارد باشند.
| معیار | سطح توصیه شده | توضیحات |
|---|---|---|
| Awareness | Yes | – |
| Training | Entry level | Comprehensive |
| Design & architecture | Occasionally | Yes |
| Coding standard | Bare minimum | Yes |
| Secure Code review | Bare minimum | Yes |
| Peer review checklist | Bare minimum | Yes |
| Unit testing | Occasionally | Yes |
| Integration testing | Occasionally | Yes |
| Penetration testing | Bare minimum | Yes |
| Tool support | Bare minimum | Yes |
| Secure Supply Chain | Occasionally | Yes |
| Awareness | Yes | – |
- توصیه میشود برای استانداردسازی امنیت برنامه از OWASP ASVS استفاده کنید.
- ASVS تنها استاندارد قابل قبول برای تولیدکنندگان ابزار است؛ ابزارها نمیتوانند تمام OWASP Top 10 را شناسایی یا محافظت کنند. OWASP هرگونه ادعای پوشش کامل را نادرست میداند.