技術交流

Fortify ScanCentral SAST 輕鬆應對多個源碼建置環境

之前在電子報中已經介紹並示範建置 Fortify ScanCentral SAST,ScanCentral 包含三個重要組件:Client、Controller 與 Sensor(如圖一),當時是在 Client 將軟體原始碼打包後上傳到 Controller,再由 Controller 派送到可用的 Sensor 進行轉譯(Translation)及掃描分析(Analysis),這樣的 Client 我們稱之為 Standalone Client,其特徵是不需在 Client 上安裝 Fortify SCA,但是 Sensor 上必須準備好原始碼的建置環境,讓 Sensor 可以成功完成轉譯(Translation)。

想像一下,如果有多個軟體原始碼需要掃描,但是開發或建置環境彼此都不同,此時要在 Sensor 上準備多個建置環境,不論是初期的建立或是往後的管理,都將會是一個難題,此時 Embedded Client 便可派上用場。Embedded Client 透過 Fortify SCA 將原始碼轉譯(Translation)成 Mobile Build Sessions(MBS),然後將 MBS 傳送到 Controller,再由 Controller 派送到 Sensor 上執行掃描分析(Analysis)。Sensor 不再進行轉譯,因此不必準備軟體的建置環境,在 Fortify ScanCentral SAST 架構中,這就是 Local Translation and Remote Scan,而開發人員的電腦或負責建置原始碼的環境就是 Embedded Client。

(圖一)

接下來將示範如何在 Visual Studio 及 IntelliJ IDEA 中實現 Local Translation and Remote Scan。

一、使用工具

  • Fortify ScanCentral SAST 24.2
  • Fortify SCA 24.2
  • Visual Studio 2022 及 Fortify Extension
  • IntelliJ IDEA 2024.1.6 及 Fortify Plugin

二、主機建置

本文將以下列主機(VM 及 NB)進行示範,請注意,各主機的配置規格並非原廠建議值,詳細規格需求請見 Fortify ScanCentral SAST Requirements

1. Controller (VM)

1.1 配置規格

  • OS:Windows Server 2022
  • RAM:4G
  • CPU:4 cores
  • APP:Fortify ScanCentral SAST 24.2

2. Sensor (VM)

2.1 配置規格

  • OS:Ubuntu 2022.04
  • RAM:8G
  • CPU:2 cores
  • APP:Fortify SCA 24.2

3.Client(NB)

3.1 配置規格

  • OS:Windows 10
  • RAM:12G
  • CPU:8 cores
  • APP:Fortify SCA 24.2、Visual Studio 2022 Community with Fortify Extension 24.2、IntelliJ IDEA Community Edition 2024.1.6 with Fortify Analysis Plugin 24.2

三、測試

1 測試準備:

  • 這次預計測試二個專案:一個是 .NET Framework 4.8 專案 - Sample1,另一個則是 Java Web 專案 - LoginProject,這些都是來自 Fortify SCA 24.2 所提供的 Sample Project。

2 測試情境:

  • Sensor 的作業系統為 Ubuntu 2022.04,除了安裝 Fortify SCA 24.2 外,並沒有 Sample1 及 LoginProject 的開發或建置環境。
  • 2.1 Sample1
    • 在 Client 上使用 Visual Studio 2022 開啟 Sample1,利用 Fortify Extension 進行 Local Translation,再透過 Controller 派送 MBS 到 Sensor 執行 Remote Scan。
  • 2.2 LoginProject
    • 在 Client 上使用 IntelliJ IDEA 2024.1.6 開啟 LoginProject,利用 Fortify Analysis Plugin 進行 Local Translation,再透過 Controller 派送 MBS 到 Sensor 執行 Remote Scan。

3 測試執行:

  • 3.1 Sample1
    • 3.1.1 使用 Visual Studio 2022 開啟 Sample1。
      圖(二)
    • 3.1.2 延伸模組 > Fortify > Options... > ScanCentral SAST Configuration。
      圖(三)
    • 3.1.3 延伸模組>Fortify>ScanCentral>Advanced Scan…。Translation Type:Local。
      圖(四)
    • 3.1.4 按下 Scan 開始掃描,此時開始在 Client 執行 Fortify SCA Translation(如圖五);轉譯完成後自動從 Client 上傳 MBS 到 Controller,Controller 回傳一個 Job token(如圖六、圖七)。
      圖(五)
      圖(六)
      圖(七)
    • 3.1.5 可在 Client 使用 Job token 查詢 Remote Scan 工作狀態,當 Job status 為 COMPLETED 時,代表 Remote Scan 已完成(如圖八)。
      圖(八)
    • 3.1.6 在 Client 使用 Job token,從 Controller 下載掃描結果(如圖九)。
      圖(九)
    • 3.1.7 開啟 Sample1.fpr,可以確認是在 Linux 上掃描(如圖十)。
      圖(十)
  • 3.2 LoginProject
    • 3.2.1 使用 IntelliJ IDEA 2024.1.6 開啟 LoginProject(如圖十一)。
      圖(十一)
    • 3.2.2 Tools>Fortify>Analysis Settings…>ScanCentral SAST Configuration(如圖十二)。 設定 Controller URL。
      圖(十二)
    • 3.2.3 Tools>Fortify>Analysis Project with ScanCentral>Analysis Project with ScanCentral – Local Translation(如圖十三)開始轉譯。
      (圖十三)
    • 3.2.4 轉譯完成後,自動從 Client 上傳 MBS 到 Controller,Controller 回傳一個 Job token(如圖十四)。
      (圖十四)
    • 3.2.5 可在 Client 使用 Job token 查詢 Remote Scan 工作狀態,當 Job status 為 COMPLETED 時,代表 Remote Scan 已完成(如圖十五)。
      (圖十五)
    • 3.2.6 在 Client 使用 Job token,從 Controller 下載掃描結果(如圖十六)。
      (圖十六)
    • 3.2.7 開啟 Sample1.fpr,可以確認是在 Linux 上掃描(如圖十七)。
      (圖十七)

結論

以上簡單示範 Fortify ScanCentral SAST Local Translation and Remote Scan,因為 Local Translation 在開發或建置環境中進行轉譯,因此負責掃描的 Sensor 不須再建立任何軟體原始碼的建置環境,所以 Sensor 管理人員不用再面對眾多建置環境的管理,大大降低了工作的複雜性。

閱讀更多