uncategorized

VSTS整合資安工具Fortify達成自動化

在資安逐步被重視的年代,企業會導入更多資安相關工具,除了本身伺服器或網路層的工具外,近年也針對程式碼進行安全性的掃瞄,目前其中市面上比較熱門的工具之一就是HPE Fortify,他本身可掃描的程式碼種類很多。在開發者端,可以透過Visual Studio的Plug in方式,安裝在Visual Studio,如果你又有Fortify Center的登入權限,便可以從Center將資安團隊設定好的規則下載下來,透過企業訂好的資安政策去掃描自己的程式碼,完畢之後,可以選擇把報告上傳到Center或是在本地自己觀看,掃描後的結果,不過,這邊我建議是上傳到Center中,可讀性會比較高,報表內容比較好看得懂

既然要走DevOps,當然除了在開發工具安裝外,也會希望在CI時候,也可以把資訊安全檢測的這一段給自動化,目前,VSTS可以透過外掛套件將Fortify整合進來,其套件名稱為Micro Focus Fortify,在 點我 來下載安裝

安裝Fortify


這邊為什麼要多安裝Fortify這步驟,因為,雖然說套件可以幫忙做到自動化,但是它底層其實是必須先有Fortify核心,然後再透過PowerShell指令驅動它,然後進行程式碼的靜態掃描。今天如果是透過地端VSTS Agent來建置,建議是手動先把它安裝好,雖然,這個Plug in有提供Fortify Static Code Analyzer Installation,其中有些設定必須要有Admin權限,所以為了省掉這中間的麻煩,還是先手動安裝好

安裝HPE Fortify SCA其實不難,主要在於必須設定裡面的資訊。

第一步

找到HPE_Security_Fortify_SCA_and_Apps_17.10_windows_x64.exe進行安裝,有買這產品的人,因該都會有這一個檔案,不過,這一個版本目前不支援掃描ASP.NET Core,必須等到HPE_Security_Fortify_SCA_and_Apps_17.20_windows_x64.exe才可以針對ASP.NET Core掃描。另外,會自動幫你安裝IDE的Plug in,不過,目前似乎不支援Visual Studio 2017版本,2017必須額外安裝Plug in。

第二步

安裝過程到了一半,會請你輸入Software Security Center的URL,就看自己企業內部架設的Software Security Center網址填入進去就可以,SSC網址會類似這樣: https://XXX.XX.XX.XX/SSC,到這邊看似已經完成,不過,會建議先用Command方式測試是否可以上傳fpr檔案,如果,無法上傳檔案,就必須找出哪邊出問題,不然,到時候VSTS也沒有辦法自動化完成上傳檔案,當然,如果不需要上傳檔案到SSC,就可以不用管它

如果遇到憑證問題,必須執行下面指令,必須先跟SSC管理員取得.cer檔案,並匯入到環境中,才不會發生憑證問題,造成無法連線

1
2
3
set "FORTIFY_HOME=C:\Program Files\HPE_Security\Fortify_SCA_and_Apps_17.10"
set "JAVA_HOME=%FORTIFY_HOME%\jre"
"%JAVA_HOME%\bin\keytool" -importcert -trustcacerts -alias ussca -file "C:\yourSCAInstallLocation\ussca.cer" -keystore "%JAVA_HOME%\lib\security\cacerts" -storetype JKS -storepass changeit

如果單機上測試都沒有問題,接下來就可以進行自動化部分,另外,在fortify中有一個fortify.license的SCA檔案,也要一併放到可以被VSTS Agent讀到的位置,因為在設定後續的Fortify Task會使用到這個檔案

在fortify安裝資料夾中找到fortifyclient.bat,用這個測試上傳fpr是否有問題

設定VSTS內Fortify Task


安裝完畢Micro Focus Fortify套件後,可以看到這些相關的TASK

要掃描程式碼,選Fortify Static Code Analyzer Assessment這個來用就可以,主要設定可以分三大塊

基本參數設定

主要設定SCA License檔案位置,和每次產生fpr檔案的命名規則

Build設定

這邊設定是要編譯程式的類型,在17.1版只有分.NET & ‘Java’版本兩種,且還不能編譯.NET Core,不過,據說下一個版本會擴充更多可編譯的類型,然後,在選擇專案位置,這邊有一個比較奇怪地方,就是如果上面有一個TASK已經做過Build,在這裡把Run Build取消,就會發生失敗狀況,所以,這邊還是必須把Run Build打勾,才可以順利進行下去。在17.1版如果是.NET程式,還是仰賴MSBuild進行,所以,編譯那一台機器上必須可以執行MSBuild

Scan

掃描類型可以分成Cloud和Local,在企業端大部分都是選擇Local Scan,就可以開始進行掃描的動作,這部分會執行時間相當長,所以,建議可以用定時執行Definitons方式

上傳fpr設定

當掃描完畢之後,就會產生.fpr檔案,這時候就必須上傳到SSC Server。此時必須先設定SSC的End Point位置,設定主機屬性如下

  • Connection Name : 給定這服務一個名稱
  • Server URL : 格式會是https://XXXX.XXX.XXX.XXX/ssc
  • User Name : 登入SSC的帳號
  • Password : 登入SSC的密碼
    再來設定對應到SSC的Application Name和Version,這邊的Application NameVersion必須和SSC上面註冊是一致的才可以,換句話說,必須在SSC註冊一個Application和它的版本

完成以上步驟,就可以自動化的SCAN,同時上傳掃描後的檔案了