Selamlar, bu yazımızda Fortify Static Code Analyzer’ın performansını etkileyen parametreleri ve tarama sonuçlarını birlikte analiz edeceğiz. Ortamlarınızdaki SCA tarama süresini azaltmak istiyorsanız ve size en uygun argümanı merak ediyorsanız bu yazı tam size göre!
Bu çalışma kapsamında OWASP’ın WebGoat projesini kullandık. Zafiyetli bir web uygulaması olarak geliştirilen ve Java Maven ile kodlanan WebGoat projesine https://github.com/WebGoat/WebGoat adresinden erişim sağlayabilirsiniz.
Ortam Bilgisi:
- WebGoat v2023.8
- Windows Server 2019 üzerinde çalışan Jenkins
- Fortify Static Code Analyzer 24.2
- Fortify ScanCentral Client 24.2
Çalışma kapsamında, Jenkins’de Fortify’ın scancentral komutunu kullanarak Remote Translation & Scan yaptık. Jenkins tarafında aşağıdaki komutu kullandık.
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "<Setting>"
"""
Varsayılan Ayarlar
Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8
"""
Varsayılan ayarlarla gerçekleştirdiğimiz tarama yaklaşık 15 dk
sürdü ve toplamda 527 bulgu
tespit edildi. Bu bulguların 99 tanesi kritik
, 90 tanesi yüksek
seviyeydi. Bulguların detayına ulaşmak isterseniz döküman sonunda paylaştığım bağlantı üzerinden PDF dosyasını indirip inceleyebilirsiniz.
Quick Scan
Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "-quick"
"""
-quick parametresiyle gerçekleştirdiğimiz tarama yaklaşık 4 dk
sürdü ve toplamda 166 bulgu
tespit edildi. Bu bulguların 76 tanesi kritik
, 90 tanesi yüksek
seviyeydi.
Scan Speed 3
Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "-scan-precision 3"
"""
-scan-precision 3 parametresiyle gerçekleştirdiğimiz bu tarama da yaklaşık 5 dk
sürdü. toplamda 527 bulgu
tespit edildi. Bu bulguların 99 tanesi kritik
, 90 tanesi yüksek
seviyeydi. Süre bakımından 2/3 oranında bir kazanç sağladı ve bulgu kalitesinde bir kayba neden olmadı.
Fortify Static Code Analyzer 24.2 dökümanında bahsedildiği üzere “-scan-precision 3”, intermediate taramaları hızlandırarak bize en iyi performansı sağlayan ayar oldu. (Burada taranan projenin Java olması bu ayarı en iyi seçenek haline getirdi)
“This precision level improves intermediate development scan speeds by up to 50% (with a reduction in reported issues). Specifically, this level improves the scan time for typed languages such as Java and C/C++.”
Scan Speed 2
Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "-scan-precision 2"
"""
-scan-precision 2 parametresiyle gerçekleştirdiğimiz bu tarama da yaklaşık 4 dk
sürdü. toplamda 498 bulgu
tespit edildi. Bu bulguların 76 tanesi kritik
, 90 tanesi yüksek
seviyeydi. Süre bakımından neredeyse QuickScan ile aynı performans sağladı, bulgu tarafında ise daha çok bulgu çıkardı.
Scan Speed 1
Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "-scan-precision 1"
"""
-scan-precision 1 parametresiyle gerçekleştirdiğimiz bu tarama da yaklaşık 3 dk
sürdü. toplamda 318 bulgu
tespit edildi. Bu bulguların 20 tanesi kritik
, 68 tanesi yüksek
seviyeydi. Süre 1dk daha kısalsa da bulgu kalitesinde ciddi oranda azalma meydana geldi.
Scan Policy’ler ile Yapılan Testler
Fortify Static Code Analyzer, 24.2 sürümüyle birlikte varsayılan scan policy olarak “security” policy’sini kullanmaya başladı. Bu sebeple burada tarama süresini azaltmasını beklediğimiz “devops” policy ile çalışma gerçekleştirildi.
Devops Scan Policy
- Bu test kapsamında aşağıdaki komutu kullandık:
bat """
C:\\Program Files\\Fortify\\Fortify_SCA_24.2.0\\bin\\scancentral.bat" -sscurl https://fortify.cw:8443/ssc -ssctoken 6f...44 start -bt mvn -upload -application WebGoat -version build_<Setting> -uptoken 41...8 -sargs "-scan-policy devops""
"""
Devops policy ile yapılan tarama yine 15dk
civarı sürerken bulgu sayısında ciddi oranda azalmaya neden oldu. Testlerimize göre tarama performansını olumsuz yönde etkiledi.
Özetle,
Gerçekleştirdiğimiz testler çerçevesinde Java Maven projeleri için tarama performansını koruyarak tarama süresini azaltma konusunda en iyi performansı “-scan-precision 3” parametresi verdi. Tespit edilen bulgularda herhangi bir kayba neden olmadı.
Yine de şunu belirtmekte fayda var, çalışmada kullandığımız proje zafiyetli bir uygulama olarak geliştirildiği için bulgu kaybı olmaması normal kabul edilebilir. Dolayısıyla proje bazlı bu durum değişkenlik gösterebilir.
Testlere ilişkin bulguların analizine buradaki PDF dökümanından erişim sağlayabilirsiniz.