在人手一機的時代,每個人手指頭不停地滑著手機中各式各樣的 App,這些 App 已經完全滲透到日常生活之中,但是這些正在使用的 App 真的安全嗎?
目前針對App的安全性測試可包含App安全漏洞檢測、行動網站(提供App使用的Web Service)安全檢測、惡意軟體檢測等等,而其中App安全漏洞檢測可透過SAST(靜態應用程式安全測試、白箱測試、源碼掃描)在App開發階段來達成,而行動網站檢測則可透過DAST(動態應用程式安全測試、黑箱測試)在網站應用程式部署之後來進行。資通電腦經銷的 Micro Focus Fortify SCA與WebInspect分別是SAST與DAST工具軟體中的佼佼者,以下將示範Fortify SCA如何針對Android與iOS平台上的App進行源碼掃描。
Fortify SCA for Android App
以下分別說明與示範三種Android App(Java)的掃描方式:
- Fortify SCA plugin(Android、Eclipse)
- Audit Workbench
- command-line
一、Fortify SCA Plugin(Android Studio)
開發Android App多使用Android Studio或Eclipse,Fortify SCA提供這二種IDE的Plugin,以下將示範如何在Android Studio上掃描專案程式碼。開始之前,請先安裝Fortify SCA及Fortify Analysis(Android Studio Plugin)。
1. Analyze Project
開啟Android Studio專案,Fortify Analysis若安裝成功,可以在上方Toolbar看見Fortify功能,點擊後選擇Analyze Project,立即啟動掃描。

掃描啟動後可由Android Studio下方狀態列看到掃描進行中。

掃描結束時右下角將出現通知訊息。

可由Event Log視窗中確認掃描結果(.fpr)的輸出路徑。

2. Advanced Scan
在Android Studio上方Toolbar的Fortify功能中,點擊Advanced Scan。

接著來到Advanced Scan視窗,在此處可以指定專案原始碼的Java版本、Build ID及掃描結果(.fpr)的輸出路徑。

來到下一頁,這裡會出現掃描時使用的命令參數,必要時可增加需要的參數,最後按下Finish開始掃描。

二、Audit Workbench
1. 啟動Audit Workbench,點擊Advanced Scan。

2. 選擇專案原始碼目錄之後會開啟Advanced Static Analysis視窗,在此可選擇排除掃描的檔案、選擇Java版本、設定Build ID及決定掃描結果(.fpr)輸出路徑。

3. 來到下一頁,確認掃描參數,尤其是中間的Translation視窗的參數,請確認已設定好Class Path參數-cp。確認完畢點擊Scan開始掃描。

三、command-line
1. 開啟cmd,切換至專案原始碼目錄(gradlew.bat位置)
2. 依序執行以下指令:
清除之前掃描資料(如圖十一),sourceanalyzer -b [Build ID] –clean
,例:sourceanalyzer -b CLIDemo -clean
轉譯階段指令(如圖十一),sourceanalyzer -b [Build ID] gradlew build
,例:sourceanalyzer -b CLIDemo gradlew build

分析階段指令,sourceanalyzer -b [Build ID] -scan -f [Result File]
,例:sourceanalyzer -b CLIDemo -scan -f C:\Temp\CLIDemo.fpr

運用上述三種方法掃描之後所產生的掃描結果(.fpr)請使用Audit Workbench開啟,除了檢視所有結果(如圖十三),也可以產生不同樣版及格式的報告(如圖十四)。


Fortify SCA for iOS App
受限於Xcode無法使用plugin,且Audit Workbench並不支援Swift或Objective-C,所以必須使用command-line方式掃描。
1. 開啟macOS的終端機應用程式,切換路徑到Xcode Project File(.xcodeproj)或Workspace File(.xcworkspace)所在目錄。
2. 依序執行以下指令:
清除之前掃描資料(如圖十五),sourceanalyzer -b [Build ID] –clean
,例:sourceanalyzer -b iGoat-Swift –clean
轉譯階段指令(如圖十五),sourceanalyzer -b [Build ID] xcodebuild clean build –project [Xcode Project File] –sdk iphonesimilator
,例:sourceanalyzer -b iGoat-Swift xcodebuild clean build –project iGoat-Swift.xcodeproj –sdk iphonesimilator

分析階段指令,sourceanalyzer -b [Build ID] –scan –f [Result File]
,例:sourceanalyzer -b iGoat-Swift –scan –f iGoat-Swift.fpr

3. 掃描之後的掃描結果(.fpr)請使用Audit Workbench開啟,除了檢視所有結果,也可產生不同樣版及格式的報告。

結論
Fortify SCA協助手機App開發人員在修復最簡單且成本最少的開發階段,識別出程式碼中的安全漏洞加以分級,並提供漏洞的詳細說明與修復建議,讓開發人員迅速修補漏洞。此外也提供Android App整合開發環境的Plugin,讓開發人員在熟悉的開發環境中進行掃描,並提供多樣的報表樣本與格式,供開發人員或其他相關人員參考。
延伸閱讀: