SAST taramalarının DevOps akışına entegrasyonu sürecinde, derleme bağımlılıklarının sağlanması önemli konulardan biridir. Derleme bağımlılıklarının başka bir araç için tekrar sağlanması ve alışmadıkları bir aracın sintaksını öğrenmek entegrasyon aşamasında ekipler için ek bir yük getirebilir. Bu yüzden bazı SAST araçları bu taramaları, doğrudan derleme aracına entegre edecek yöntemler sunar.
Bu yazıda Java ve .NET derleme ortamlarinda, Maven, Dotnet ve Msbuild komutları üzerinden nasıl SAST taramaları gerçekleştirebileceğimize odaklanacağız. Şimdi bu tarama şeklini Fortify aracı üzerinden inceleyelim.
Maven
Maven Plugin’leri, derleme sürecini özelleştirmek için kullanılan bileşenlerdir. DevSecOps süreçlerinde kod kalitesi ve güvenliği için kullanılmak üzere SpotBugs, SonarQube, Sonatype, Fortify gibi birçok araç maven plugini sağlar.
Aşağıdaki maven komutunda doğal komutun üzerine fortify plugini ve değişkenlerinin eklemlendiğini görüyoruz. Maven sintaksına aşina olan biri için, bunlar ek parametreler olarak gözükecektir, ama bağımlılıklar için gerekli ana derleme komutu korunacaktır.
mvn package com.fortify.sca.plugins.maven:sca-maven-plugin:24.4.0:startScanCentral -Dfortify.ScanCentral.ctrl.url=http://192.168.13.192:8081/scancentral-ctrl -Dfortify.ScanCentral.uploadToSSC=true -Dfortify.ScanCentral.ssc.ScanCentralCtrlToken=3a3429b8-75b7-48a0-aa7b-f55143e9f61e -Dfortify.ScanCentral.ssc.url=http://192.168.13.192:8080/ssc -Dfortify.ssc.applicationName=eightball -Dfortify.ssc.applicationVersion=dev -Dfortify.ScanCentral.ssc.uploadToken=3a3429b8-75b7-48a0-aa7b-f55143e9f61e
Bu komutta ilgili proje pom.xml dosyası üzerinden derleniyor ve taranmak üzere başka bir makineye gönderiliyor, tarama makinesinde de ek bir derleme ortamına ihtiyaç duyulmuyor.
.NET
.targets dosyaları, MSBuild sürecinde belirli görevleri tanımlayan XML tabanlı dosyalardır. İçlerinde hedefler (targets), görevler (tasks) ve koşullu işlemler bulunur. Bu dosyalar genellikle .csproj gibi proje dosyalarına dahil edilir ve belirli derleme aşamalarında otomatik olarak çalıştırılır.
set FORTIFY_MSBUILD_BUILDID=vulnweb && msbuild /t:rebuild /p:CustomAfterMicrosoftCommonTargets="C:\Program Files\Fortify\Fortify_SCA_24.4.1\Core\private-bin\sca\MSBuildPlugin\Framework\Fortify.targets" .\VulnWebApp_MVC.csproj
Yukarıdaki komutta Fortify, derleme sürecinde kendi .targets dosyası aracılığıyla ilgili analiz işlemlerini gerçekleştiren özel DLL’leri çağırır. Böylece yine doğal msbuild komutuna eklemlenerek, kendi tarama işlemini gerçekleştirir. .NET Core uygulamaları için de dotnet komutu üzerinden çalışabilir.
set FORTIFY_MSBUILD_BUILDID=vulnweb && dotnet msbuild /t:rebuild /p:CustomAfterMicrosoftCommonTargets="C:\Program Files\Fortify\Fortify_SCA_24.4.1\Core\private-bin\sca\MSBuildPlugin\Dotnet\Fortify.targets"
Daha sonra translate edip, nst formatına dönüştürdüğü projeyi, taranmak için başka bir makineye gönderebilir.
scancentral -url http://192.168.13.192:8081/scancentral-ctrl start -upload --application vulnweb --application-version dev -uptoken 3a3429b8-75b7-48a0-aa7b-f55143e9f61e -b vulnweb -scan
Böylece tarama makinesinde ek bir derleme ortamına ihtiyaç duymaz. □