Jenkins + HP fortify SCA 源碼檢測
2019/06/21 18:37:53
0
2828
Jenkins + HP fortify SCA 源碼檢測
簡介 |
以人工方式進行Code Review還必須有豐富的經驗,才可能尋找出潛在的程式碼弱點或是資安漏洞,這是一項耗時的工作,若藉由第三方軟體將可取代人工方式Code Review,又可以大幅節省時間。 這次要介紹 HP fortify SCA 源碼檢測軟體,此軟體可以找出疑似弱點、漏洞的原始碼以降低資安威脅,筆者將要介紹整合此軟體整合到Jenkins,透過Jenkins排程每天進行掃描原始碼以確保資安。 |
作者 |
姜志民 |
一、軟體安裝
必須先安裝 HP fortify SCA ,再透過軟體內的sourceanalyzer.exe,來做原始碼的檢測工作,再透過BIRTReportGenerator.cmd來將檢測結果匯出成pdf檔案。
二、準備要檢測的原始碼
底下是一個很簡單原始碼,但卻有隱藏著問題,對一般有經驗的開發人員,很容易一下子就看出問題,例如:SQL Injection,剩下的問題就由HP fortify SCA 來幫我們找出來。
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fortify
{
class Program
{
static void Main(string[] args)
{
string connectionConfig = "Initial Catalog=Test; Data Source=TestDataSource;user id=admin;password=admin;";
string query1 = "Select * from Employees where name=" + args[1];
System.Data.SqlClient.SqlConnection conn = new SqlConnection(connectionConfig);
conn.Open();
SqlDataAdapter adapter1 = new SqlDataAdapter(args[1], connectionConfig);
SqlDataAdapter adapter2 = new SqlDataAdapter(query1, connectionConfig);
DataSet oDataSet = new DataSet();
Console.WriteLine(oDataSet.GetXml());
}
}
}
三、源碼檢測Jenkins腳本
node {
//清除SCA intermediate files與build records
bat '\"C:\\Program Files\\HPE_Security\\Fortify_SCA_and_Apps_17.20\\bin\\sourceanalyzer.exe\" -b csharp -clean'
//對專案進行編譯動作
bat '\"C:\\Program Files\\HPE_Security\\Fortify_SCA_and_Apps_17.20\\bin\\sourceanalyzer.exe\" -b csharp \"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe" \"%WORKSPACE%\\Fortify\\Fortify.sln\" /target:\"REBUILD\" /p:Configuration=\"Debug\"'
//對專案進行掃描作業並將掃描結果存成fpr檔案
bat '\"C:\\Program Files\\HPE_Security\\Fortify_SCA_and_Apps_17.20\\bin\\sourceanalyzer.exe\" -b csharp -scan -64 -verbose -format \"fpr\" -f \"Assessment.fpr\"'
//利用fpr檔案輸出掃描結果為pdf檔案以方便閱讀
bat '\"C:\\Program Files\\HPE_Security\\Fortify_SCA_and_Apps_17.20\\bin\\BIRTReportGenerator.cmd\" -template \"Developer Workbook\" -format \"PDF\" -output \"Assessment.pdf\" -source \"Assessment.fpr\"'
//將Assessment.pdf檔案進行封存成品
archiveArtifacts 'Assessment.pdf'
}
四、新增Jenkins pipeline作業
在「pipeline」頁籤中,填入步驟三的「源碼檢測Jenkins腳本」。按下「儲存」按鈕之後,就進行「馬上建置」。
五、源碼檢測報告
「馬上建置」之後,可以看到已經產生好的Assessment.pdf源碼檢測報告。
打開Assessment.pdf後,在「Executive Summary」頁面可以看到原始碼整體資安威脅程度。
在源碼檢測報告檢測出Insecure Transport: Database、Password Management: Hardcoded Password、SQL Injection…等問題,筆者就拿大家都耳能熟詳的SQL Injection來看源碼檢測報告說明與建議,筆者只會擷取部分重要的報告給各位讀者參考,如下圖。