技術交流

Fortify 源碼檢測嚴格把關應用程式安全性(上)

Norman Norman

持續整合(Continuous Integration;CI)是一種軟體開發實務,開發人員在每次分支(branch)任務完成後、新程式碼合併到主幹(trunk)前,需持續進行建置(build)、測試與程式碼分析,期望更快地發現和解決程式中的錯誤、改善軟體品質,並縮短驗證及發行軟體更新所需的時間。而 Jenkins 是實現持續整合的知名工具之一,可協助自動化執行持續整合的各項活動,也可與 Fortify SCA(Static Code Analyzer;靜態原始碼檢測工具)進行整合,確保軟體開發安全性。

Fortify SCA 與 Jenkins 有多種整合方式,在 Jenkins 的每次建置中,透過 Fortify SCA 進行源碼掃描,找出原始碼中的安全性問題,提供開發人員進行修補以降低資安威脅,提升軟體品質。

以下簡單示範二種 Fortify SCA 與 Jenkins 的整合方式,一種是透過 Fortify Jenkins Plugin,而另一種則是透過執行 Windows 批次指令。

整合方式一:使用 Fortify Jenkins Plugin

1. 事前準備:

Fortify SCA 19.1.2
Jenkins 2.190.1
MSBuild(from Visual Studio 2017)
Source Code:riches.net(from Fortify SCA samples)

1.1 安裝 Fortify Jenkins Plugin
管理 Jenkins→管理外掛程式「可用的」頁籤→「過濾條件」欄位中輸入 Fortify→勾選「Fortify」→按下「直接安裝」

1.2 設定環境變數
管理 Jenkins→ 設定系統→全域屬性→勾選「環境變數」→Key-Value 對應清單→按下「新增」
設定二個環境變數,新增完畢按下「儲存」

名稱:FORTIFY_HOME
值:C:\Program Files\Fortify\Fortify_SCA_and_Apps_19.1.0

名稱:PATH
值:C:\Program Files\Fortify\Fortify_SCA_and_Apps_19.1.2\bin;
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64

整合作業流程

2.1 新增作業→輸入項目名稱「riches.net」,選擇「建置 Free-Style 軟體專案」,按下「OK」

2.2 在「建置後動作」頁籤中,按下「新增建置後動作」,選擇「Fortify Assessment」

整合作業流程

2.3 輸入以下欄位,並勾選「Run Fortify SCA clean」

Build ID:riches.net
Result file:C:\Temp\riches.net.fpr

整合作業流程

2.4 勾選「Run Fortify SCA translation」,輸入以下欄位:

Translation type:Basic
Application type:.NET
Scan type:Project Solution Scan
Build type:MSBuild
Solution or project file:C:\Temp\riches.net\RichesDotnet.sln
MSBuild options:"/t:rebuild"

整合作業流程

2.5 勾選「Run Fortify SCA scan」,最後按下「儲存」

2.6 馬上建置

2.7 使用 Auditor Workbench(AWB)開啟 C:\Temp\riches.net.fpr 檢視掃描結果

整合作業流程

瞭解 Fortify Jenkins Plugin 整合方式後,是否也想知道如何透過 Windows 批次指令整合 Jenkins 呢?詳情請見下期電子報。