امنیت یکی از بایدهای تمام های پروژه ها هست
و امنیت پروژه فقط بعد از Deploy کردن، یک باگ اساسی داره
دیر متوجه مشکلات امنیتی میشید
بعضی مشکلات امنیتی میتونن یک استارتاپ رو با خاک یکسان کنن
یکی از مهمترین مفاهیم DevSecOps، استفاده از SAST (Static Application Security Testing) هست
SAST بدون اینکه برنامه اجرا بشه، سورسکد، Bytecode یا Binary رو بررسی میکنه و آسیبپذیریهای امنیتی رو قبل از رسیدن به Production پیدا میکنه
چند مورد از آسیبپذیریهایی که SAST میتونه شناسایی کنه
1. SQL Injection
2. XSS
3. Buffer Overflow
4. استفاده ناامن از کتابخانهها و Dependencyها
5. برخی خطاهای منطقی و امنیتی در کد
مزیت اصلی SAST اینه که مشکل رو همون موقع که برنامهنویس در حال توسعه است پیدا میکنه، نه زمانی که محصول پیاده شده و باید با Patch اضطراری، Downtime و هزینههای سنگین سراغ رفع مشکل رفت
البته SAST همه چیز نیست!!
چون کد رو اجرا نمیکنه، بعضی مشکلات مثل خطاهای مربوط به Runtime، تنظیمات اشتباه، Authentication و Access Control رو ممکنه تشخیص نده
برای همین معمولا SAST و DAST کنار هم استفاده میشن:
* SAST قبل از اجرا، کد رو بررسی میکنه
* DAST بعد از اجرا، رفتار واقعی برنامه رو تست میکنه
یک اشتباه خیلی راج اینه که SAST و SCA رو یکی بدونیم
در اصل SCA یا Software Coposition Analysis میاد وابستگی های پروژه رو چک میکنه و اگر از CVE براشون وجود داشته باشه، اون رو گزارش میده
چند تا ابزار آزاد و متن باز برای DevSecOps
1. Semgrep
یکی از محبوبترین ابزارهای SAST که سرعت بالایی دارد، از زبانهای مختلف پشتیبانی میکند و بهراحتی داخل CI/CD اجرا میشود.
2. OWASP ZAP
شناختهشدهترین ابزار متنباز DAST برای تست امنیت برنامه در حال اجرا
3. Trivy
ابزاری چندمنظوره که علاوه بر Container Image Scan، قابلیت SCA و IaC Scanning را هم ارائه میدهد و در بسیاری از Pipelineها استفاده میشود.
پیشنهاد میکنم SAST رو به Pipeline اضافه کنید تا با هر Commit یا Pull Request کد بهصورت خودکار اسکن بشه. این هم امنیت پروژه رو بیشتر میکنه و هم هزینه رفع باگهای امنیتی رو بهشدت کاهش میده.
به نظر من الان هم داشتن SAST داخل Pipeline مثل داشتن Unit Test هست
یعنی واجبه
چیزی که دیگه یک قابلیت اضافه نیست، بلکه بخشی از استاندارد توسعه نرمافزار محسوب میشه
#security #devsecops
و امنیت پروژه فقط بعد از Deploy کردن، یک باگ اساسی داره
دیر متوجه مشکلات امنیتی میشید
بعضی مشکلات امنیتی میتونن یک استارتاپ رو با خاک یکسان کنن
یکی از مهمترین مفاهیم DevSecOps، استفاده از SAST (Static Application Security Testing) هست
SAST بدون اینکه برنامه اجرا بشه، سورسکد، Bytecode یا Binary رو بررسی میکنه و آسیبپذیریهای امنیتی رو قبل از رسیدن به Production پیدا میکنه
چند مورد از آسیبپذیریهایی که SAST میتونه شناسایی کنه
1. SQL Injection
2. XSS
3. Buffer Overflow
4. استفاده ناامن از کتابخانهها و Dependencyها
5. برخی خطاهای منطقی و امنیتی در کد
مزیت اصلی SAST اینه که مشکل رو همون موقع که برنامهنویس در حال توسعه است پیدا میکنه، نه زمانی که محصول پیاده شده و باید با Patch اضطراری، Downtime و هزینههای سنگین سراغ رفع مشکل رفت
البته SAST همه چیز نیست!!
چون کد رو اجرا نمیکنه، بعضی مشکلات مثل خطاهای مربوط به Runtime، تنظیمات اشتباه، Authentication و Access Control رو ممکنه تشخیص نده
برای همین معمولا SAST و DAST کنار هم استفاده میشن:
* SAST قبل از اجرا، کد رو بررسی میکنه
* DAST بعد از اجرا، رفتار واقعی برنامه رو تست میکنه
یک اشتباه خیلی راج اینه که SAST و SCA رو یکی بدونیم
در اصل SCA یا Software Coposition Analysis میاد وابستگی های پروژه رو چک میکنه و اگر از CVE براشون وجود داشته باشه، اون رو گزارش میده
چند تا ابزار آزاد و متن باز برای DevSecOps
1. Semgrep
یکی از محبوبترین ابزارهای SAST که سرعت بالایی دارد، از زبانهای مختلف پشتیبانی میکند و بهراحتی داخل CI/CD اجرا میشود.
2. OWASP ZAP
شناختهشدهترین ابزار متنباز DAST برای تست امنیت برنامه در حال اجرا
3. Trivy
ابزاری چندمنظوره که علاوه بر Container Image Scan، قابلیت SCA و IaC Scanning را هم ارائه میدهد و در بسیاری از Pipelineها استفاده میشود.
پیشنهاد میکنم SAST رو به Pipeline اضافه کنید تا با هر Commit یا Pull Request کد بهصورت خودکار اسکن بشه. این هم امنیت پروژه رو بیشتر میکنه و هم هزینه رفع باگهای امنیتی رو بهشدت کاهش میده.
به نظر من الان هم داشتن SAST داخل Pipeline مثل داشتن Unit Test هست
یعنی واجبه
چیزی که دیگه یک قابلیت اضافه نیست، بلکه بخشی از استاندارد توسعه نرمافزار محسوب میشه
#security #devsecops
👍31❤16👏3🔥1