顯示具有 Dependency-Track 標籤的文章。 顯示所有文章
顯示具有 Dependency-Track 標籤的文章。 顯示所有文章

2025年8月18日 星期一

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(四)

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(四)

2025-08-18

第四個系統 ASP.NET WebForm 系統。

OWASP Dependency-Track (DT) 畫面


**********

Mend(原 WhiteSource)畫面


(完)

相關

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(一)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(二)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_18.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(三)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_27.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(四)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_84.html


[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(三)

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(三)

2025-08-18

第三個系統 ASP.NET WebForm 系統。

OWASP Dependency-Track (DT) 畫面



**********

Mend(原 WhiteSource)畫面


(完)

相關

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(一)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(二)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_18.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(三)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_27.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(二)

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(二)

2025-08-18

另一個系統 ASP.NET WebForm 系統。

OWASP Dependency-Track (DT) 畫面


**********

Mend(原 WhiteSource)畫面



(完)

相關

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(一)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend.html

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(二)
https://shaurong.blogspot.com/2025/08/owasp-dependency-track-dt-mend_18.html

2025年8月13日 星期三

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(一)

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)實際掃描結果比較(一)

2025-08-13

這是同一個專案

OWASP Dependency-Track (DT) 畫面

註解:Attributed On 欄位的日期代表的是:該漏洞(Vulnerability)或安全資訊 被正式歸因(attributed)給該元件或套件的日期,是 Dependency-Track 從漏洞資料來源(Vulnerability Source)抓回來的日期。

**********

Mend(原 WhiteSource)畫面


Severity 點下去有詳細資訊
********************************************************************************
某 ASP.NET WebForm 專案,OWASP Dependency-Track (DT) 列出了有弱點的元件資訊

System.Security.Cryptography.X509Certificates 4.3.2 CVE-2024-0057
bootstrap 3.4.1 NVD CVE-2024-6484
bootstrap 3.4.1 NVD CVE-2024-6485
bootstrap 3.4.1 NVD CVE-2024-6531
RestSharp 106.15.0 NVD CVE-2024-45302
vue 2.6.11 NVD CVE-2024-9506
bootstrap 3.4.1 NVD CVE-2025-1647
System.Text.Json 9.0.8 NVD CVE-2024-43485

Mend 列出了有弱點的元件資訊
vue-2.6.11.min.js CVE-2024-9506 CVE-2024-6783
vue-2.5.21.js CVE-2024-9506
vue-2.5.21.min.js CVE-2024-9506
vue-2.6.11.js CVE-2024-9506 CVE-2024-6783
sixlabors.imagesharp.2.1.8.nupkg CVE-2025-27598 CVE-2025-54575 CVE-2024-41131 CVE-2024-41132

為何掃出的套件有差異?

ChatGPT 說:

你看到 OWASP Dependency-Track (DT) 和 Mend 掃描結果不一致,主要是因為兩者的元件識別方式、掃描範圍、資料來源、版本解析邏輯都有差異。
我幫你拆成幾個關鍵原因來看:

1. 識別方式不同
  • DT
主要透過 SBOM(Software Bill of Materials)或套件管理檔案(例如 .csproj、packages.config、package-lock.json)中宣告的套件名稱與版本,依照套件層級(NuGet package、NPM package、JAR、Docker image 等)來比對漏洞資料庫。
  • Mend
除了讀取套件管理檔案,也會直接掃描實際檔案內容(如 .js、.dll、.min.js、.nupkg)並用檔案指紋(hash / signature)去匹配漏洞資料庫。
→ 所以 Mend 才會報 vue-2.6.11.min.js 與 vue-2.5.21.js 這種單獨的檔案名稱,而 DT 則是只看到 vue 2.6.11 這個 package。

2. 掃描範圍不同
  • DT 偏向「專案依賴」層面,通常看你宣告安裝的**直接依賴(direct dependencies)**與已解析出的間接依賴(transitive dependencies)。
  • Mend 除了直接與間接依賴,也會去掃描:
    • 壓縮檔內的第三方資源(如 .nupkg 內嵌的 DLL/JS)
    • wwwroot、Scripts 資料夾中的第三方前端庫
    • 未透過套件管理器安裝的手動引用檔案(vendor code)

3. 漏洞資料來源不同
  • DT 常用的來源:
    • NVD(National Vulnerability Database)
    • GitHub Security Advisories
    • Sonatype OSS Index(視設定而定)
  • Mend 的來源更混合:
    • NVD
    • Mend 自家的漏洞資料庫(從各種 GitHub issue、專案 changelog、研究報告匯入)
    • 其他公開與商業威脅情報
    • 因此可能會掃到 NVD 尚未收錄的 CVE(例如 CVE-2024-6783)

4. 版本與比對演算法不同
  • 有些漏洞是針對特定版本範圍發佈的,但不同掃描工具在版本正則判斷上會有落差
    → 可能 DT 判斷你的版本不在漏洞範圍,但 Mend 的匹配規則比較寬鬆,於是報出來。
  • 反之,也可能 Mend 的 signature 沒對到你的檔案版本,於是沒報。

5. 更新頻率不同
  • 漏洞資料庫更新頻率不同會影響掃描結果。
    有些 CVE 發布初期,NVD 還沒「enrich」(補充詳細描述與受影響版本),DT 可能就暫時沒有資訊,而 Mend 可能已經自行補齊。

💡 簡單比喻
  • DT 比較像「看你說你家買了哪些電器,去查電器型號有沒有瑕疵」;
  • Mend 像是「直接進你家,數你有幾台電器,連朋友送你的、二手的、沒登記的都找出來比對」。

********************************************************************************


(完)

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)比較

[研究]OWASP Dependency-Track (DT) 與 Mend(原 WhiteSource)比較 

2025-08-13

SCA(Software Composition Analysis)軟體組成分析

Dependency-Track (DT) 與 Mend 功能比較表
比較項目Dependency-Track (DT)Mend
產品性質開源 SCA(Software Composition Analysis)平台,由 OWASP 社群維護商業 SCA 與授權管理平台(原 WhiteSource),由 Mend.io 維護
授權模式Apache 2.0 開源授權,免費商業授權,依用戶/專案/程式碼庫計費
部署方式自行部署(Docker、Kubernetes、裸機,支援離線環境)雲端 SaaS 或私有部署(需授權)
核心功能SBOM 管理(原生支援 CycloneDX)、漏洞檢測、授權合規檢查SBOM 管理、漏洞檢測、授權合規、自動修補 PR、進階政策控管
漏洞資料來源NVD、OSS Index、VulnDB(可擴充自有資料庫)NVD、專屬商業漏洞資料庫、0-day 情資
授權管理基本授權辨識與合規檢查完整授權分析、合規政策、自動阻擋不符授權的套件
修補建議提供漏洞版本與修補資訊,無自動 PR 功能提供漏洞修補建議,可自動開 PR 升級套件
優先排序能力基於 CVSS 分數與風險分佈AI/演算法結合可利用性、影響範圍進行風險優先排序
DevOps 整合CI/CD、API、Webhook(需自行配置)深度支援 CI/CD(Jenkins、GitHub Actions、Azure DevOps…)、IDE 外掛
報表與視覺化自訂報表、Web API 輸出完整管理儀表板、視覺化報表、自動通知
維護與支援需自行維護、更新與疑難排解提供廠商技術支援與版本更新
適用對象成本敏感、具備維運能力、需離線部署的組織預算充足、需快速導入、重視商業支援與自動化的組織

(完)

2024年3月4日 星期一

[研究]OWASP Dependency-Track 報告 System.Security.Cryptography.X509Certificates 4.3.2 有弱點 CVE-2024-0057

[研究]OWASP Dependency-Track 報告 System.Security.Cryptography.X509Certificates 4.3.2 有弱點

2024-03-04


CVE-2024-0057 10 Jan 2024

CVSS Base Score : 9.8

CVSS Impact Subscore : 5.9

CVSS Exploitability Subscore : 3.9

References


.NET、.NET Framework 和 Visual Studio 安全性功能略過弱點 Recently updated

CVE-2024-0057
安全性弱點
發行日期: 2024年1月9日、上次更新:2024年2月13日
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-0057

CVE-2024-0057 .NET Vulnerability in NetApp Products
https://security.netapp.com/advisory/ntap-20240208-0007/

攻擊者如何利用此漏洞?

攻擊者可以透過建立特製的 X.509 憑證來利用此漏洞,故意引入或故意引發鏈建置失敗。

成功利用此漏洞可以繞過什麼樣的安全功能?

當基於 Microsoft .NET Framework 的應用程式使用 X.509 鏈建立 API 但由於邏輯缺陷而未完全驗證 X.509 憑證時,存在安全功能繞過漏洞。攻擊者可以提供帶有格式錯誤的簽名的任意不受信任的證書,從而觸發框架中的錯誤。該框架將正確報告 X.509 鏈建置失敗,但會傳回錯誤的失敗原因程式碼。利用此原因程式碼做出自己的鏈建構信任決策的應用程式可能會無意中將此場景視為成功的鏈建構。這可能允許對手破壞應用程式的典型身份驗證邏輯。

CWE-20: Improper Input Validation
https://cwe.mitre.org/data/definitions/20

NuGet 上 System.Security.Cryptography.X509Certificates 4.3.2 已經是最新版
https://www.nuget.org/packages/system.security.cryptography.x509certificates/


因為 'System.Net.Http.4.3.4' 相依於它,所以無法解除安裝 'System.Security.Cryptography.X509Certificates.4.3.2'。


用 NuGet 把 System.Net.Http 移除後,編譯會出錯

error CS1069: 命名空間 'System.Net.Http' 中找不到類型名稱 'HttpClient'。此類型已轉送到組件 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a',請考慮加入該組件的參考。

(完)

2022年9月27日 星期二

[研究]Jenkins作業(Job)組態的Dependency-Track(DT)設定

[研究]Jenkins作業(Job)組態的Dependency-Track(DT)設定

2022-09-27

Continuous Integration & Delivery | Dependency-Track
https://docs.dependencytrack.org/usage/cicd/

GitHub - jenkinsci/dependency-track-plugin: Master repository for the official Dependency-Track Jenkins plugin
https://github.com/jenkinsci/dependency-track-plugin

OWASP Dependency-Track | Jenkins plugin
https://plugins.jenkins.io/dependency-track/#releases

********************************************************************************

git 上傳時 Gitea Server 時,用 JenKins 執行 CycloneDX 產生 bom.json 丟給 Dependency Track Server 去分析。

註:Fortify SCA => Micro Focus Static Code Analyzer


(下圖) click 圖片可看 100% 尺寸


Dependency-Track 相關設定

先建立一個 Project





********************************************************************************
Jenkins 相關設定











(下圖) 選擇要修改的 Jenkins 作業(Job),修改其「組態」



********************************************************************************
General

包含
1. Office 365 Connector - 可以觸發將 log 送到 Microsoft Teams 中






********************************************************************************
原始碼管理

當 git client 上傳 CODE 到 Git Server,觸發工作

********************************************************************************
建置觸發程序



********************************************************************************
建置環境


********************************************************************************
Build Steps

包含
1.執行Windows批次指令
(1)用 NuGet 取得 ASP.NET WebForms 方案所用的套件 ( packages)
(2)自動發佈到測試機 (建立網路芳鄰連線)
(3)用 CycloneDX 產生 SBOM ( bom.xml 不能用,要用 -j 參數產生 bom.json 才行)
2. Build a Visual Studio project or solution using MSBuild
(1) 用 MSbuild.exe 編譯方案
(2)自動發佈到測試機 (使用使用者自己建立的發佈檔案 FolderProfileLab )
3. 執行Windows批次指令 (多個)
(1)自動發佈到測試機 (發佈完成,刪除網路芳鄰連線)
(2)使用自己建立的 Fortify SCA 報告範本檔案
4.Invoke Dependency-Check


內容如下  (某些名稱修改過)

D:\BuildTool\nuget.exe restore .\WebApplicationDir\WebApplicationSolution.sln

REM 自動發佈到測試站
REM 連線要中斷,否則下次再次連線,會失敗,導致 JenKins Job 結束
REM 建立網路芳鄰連線,供發佈 CODE 別台網站根目錄使用
net use * /del /yes
net use I: \\192.168.99.166\D$ 密碼 /USER:[AD網域]\[AD使用者帳號]

REM 產生給 Dependency-Track 的 SBOM
dotnet tool install --global CycloneDX
REM 產生 bom.xml,Jenkins 上傳給 Dependency-Track (失敗,或許有其他解法)
REM dotnet CycloneDX .\WebApplicationDir\WebApplicationSolution.sln -o .\
REM 產生 bom.json,Jenkins 上傳給 Dependency-Track (成功) dotnet CycloneDX .\WebApplicationDir\WebApplicationSolution
.sln -j -o .\

註:目錄說明

  • 【句點】表示【D:\Jenkins\workspace\[JenKins作業名稱]\】目錄;
  • Jenkins工作目錄依據安裝或設定,未必是【D:\Jenkins\workspace\】,要因應修改;
  • 方案.sln 目錄 D:\Jenkins\workspace\[JenKins作業名稱]\WebApplicationDir\WebApplicationSolution.sln
    WebApplicationDir 和 WebApplicationSolution 一般名稱會相同,但非絕對。
  • WebApplicationDir 和 WebApplicationSolution 一般名稱會相同,但非絕對。

內容如下  (某些名稱修改過)

MSBuild15   


.\WebApplicationDir\WebApplicationSolution.sln   


/p:DeployOnBuild=true   /p:PublishProfile=FolderProfileLab   



內容如下  (某些名稱修改過)


REM 自動發佈到測試站
REM 連線要中斷,否則下次再次連線,會失敗,導致 JenKins Job 結束
net use * /del /yes
REM net use /delete I:

REM 如果檔案不存在 , 開一個新的檔案並寫入一個不會存在的版本進去
echo %GIT_COMMIT%

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

if not exist %WORKSPACE%\%SubFolder%\git_diff.txt  (
   echo "file not exists"
   echo -1 > %WORKSPACE%\%SubFolder%\git_diff.txt
)

if exist %WORKSPACE%\%SubFolder%\Assessment_diff.pdf (
   echo "oid pdf file found"
   del %WORKSPACE%\%SubFolder%\Assessment_diff.pdf
)


內容如下  (某些名稱修改過)


REM 判斷版本差異是否存在 , 如果存在的話才需要做掃描

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

if exist %WORKSPACE%\%SubFolder%\new.fpr (
  echo "clear new record"
  del %WORKSPACE%\%SubFolder%\new.fpr
)

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
   sourceanalyzer.exe -b %JOB_NAME% -clean
   sourceanalyzer.exe -b %JOB_NAME% msbuild /t:rebuild %WORKSPACE%\%SubFolder%\WebApplicationFrontSolution.sln
   sourceanalyzer.exe -b %JOB_NAME% -scan -verbose -Xmx14G -format "fpr" -f "%WORKSPACE%\%SubFolder%\new.fpr"
) 


內容如下  (某些名稱修改過)


REM 如果有 old.fpr 做 merge 動作
set SubFolder=WebApplicationFrontSolution

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
  if exist %WORKSPACE%\%SubFolder%\old.fpr (
     echo "merge old record with new record"
     FPRUtility.bat -merge -project %WORKSPACE%\%SubFolder%\new.fpr -source %WORKSPACE%\%SubFolder%\old.fpr
  )
)
 


內容如下  (某些名稱修改過)


REM 判斷版本差異是否存在 , 如果存在的話才需要轉換成pdf檔案

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All_New.xml
set SubFolder=WebApplicationFrontSolution

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
   move /Y %WORKSPACE%\%SubFolder%\new.fpr %WORKSPACE%\%SubFolder%\old.fpr
REM   ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -f "%WORKSPACE%\%SubFolder%\Assessment_diff.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
   ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -filterSet "Quick View" -f "%WORKSPACE%\%SubFolder%\Assessment_diff.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
)


內容如下  (某些名稱修改過)


REM 產生完整的報告出來

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

REM ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -f "%WORKSPACE%\%SubFolder%\Assessment_all.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"

ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -filterSet "Quick View" -f "%WORKSPACE%\%SubFolder%\Assessment_all.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
 


內容如下  (某些名稱修改過)


REM 最後同步專案版本資訊

set SubFolder=WebApplicationFrontSolution
echo %GIT_COMMIT% > %WORKSPACE%\%SubFolder%\git_diff.txt  



********************************************************************************
建置後動作

包含
1. Publish BOM to Dependency-Track
2. 可編式電子郵件通知
3.電子郵件通知


下面說明:
bom.json 要根據上面輸出目錄而調整,如果輸出到【D:\Jenkins\workspace\[JenKins作業名稱]\】目錄,就不需要加上目錄名稱,否則要加上。




內容如下  (某些名稱修改過)


WebApplicationFrontSolution   
bom.json




********************************************************************************

完整組態內容如下  (某些名稱修改過)

General

描述
[純文字] 預覽 
Office 365 Connector
Notification webhooks
URL?
https://MyCompany.webhook.office.com/webhookb2/123jihj-12ncw/JenkinsCI/324ji23j-17h3
Name?
MyCompanyjenkins
 


This build requires lockable resources

Throttle builds?
參數化建置?
捨棄舊建置?
必要時同時執行多個建置?
限制專案執行節點?
 
原始碼管理
無
Git?
Repositories?
Repository URL?
http://192.168.199.145:3000/MyCompany/WebApplicationWeb.git
Credentials?
32kl23l23-2je3-21
 

Branches to build?
Branch Specifier (blank for 'any')?
*/master

儲存庫瀏覽器?

Gitea
Repository URL?
http://192.168.199.145:3000/MyCompany/WebApplicationWeb.git
Additional Behaviours
建置觸發程序

遠端觸發建置 (例如: 透過 Script 腳本)
?
驗證 Token
MyCompany_COMMIT
可以透過下列 URL 觸發建置: JENKINS_URL/job/Fortify_WebApplicationFrontSolution/build?token=TOKEN_NAME 或 /buildWithParameters?token=TOKEN_NAME
Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause.

Generic Webhook Trigger
?

在其他專案建置完成後建置
?

定期建置
?
排程
?
H H * * 6
Would last have run at 2022年9月24日 星期六 上午12:34:29 [台北標準時間]; would next run at 2022年10月1日 星期六 上午12:34:29 [台北標準時間].

輪詢 SCM
?
建置環境

Delete workspace before build starts

Use secret text(s) or file(s)
?

Color ANSI Console Output

Inspect build log for published Gradle build scans

Terminate a build if it's stuck

With Ant
?

在「畫面輸出」中加入時間戳記
Build Steps
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
D:\BuildTool\nuget.exe restore .\WebApplicationDir\WebApplicationSolution.sln
REM 自動發佈到測試站 REM 連線要中斷,否則下次再次連線,會失敗,導致 JenKins Job 結束 REM 建立網路芳鄰連線,供發佈 CODE 別台網站根目錄使用 net use * /del /yes net use I: \\192.168.99.166\D$ 密碼 /USER:[AD網域]\[AD使用者帳號] REM 產生給 Dependency-Track 的 SBOM dotnet tool install --global CycloneDX REM 產生 bom.xml,Jenkins 上傳給 Dependency-Track (失敗,或許有其他解法)
REM dotnet CycloneDX .\WebApplicationDir\WebApplicationSolution.sln -o .\
REM 產生 bom.json,Jenkins 上傳給 Dependency-Track (成功) dotnet CycloneDX .\WebApplicationDir\WebApplicationSolution
-j -o .\
 
Build a Visual Studio project or solution using MSBuild
MSBuild Version

MSBuild15
MSBuild Build File?
.\WebApplicationDir\WebApplicationSolution.sln
Command Line Arguments? /p:DeployOnBuild=true /p:PublishProfile=FolderProfileLab Pass build variables as properties? Do not use chcp command 執行 Windows 批次指令? 指令 可以參考可用環境變數清單
REM 自動發佈到測試站
REM 連線要中斷,否則下次再次連線,會失敗,導致 JenKins Job 結束
net use * /del /yes
REM net use /delete I:

REM 如果檔案不存在 , 開一個新的檔案並寫入一個不會存在的版本進去
echo %GIT_COMMIT%

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

if not exist %WORKSPACE%\%SubFolder%\git_diff.txt  (
   echo "file not exists"
   echo -1 > %WORKSPACE%\%SubFolder%\git_diff.txt
)

if exist %WORKSPACE%\%SubFolder%\Assessment_diff.pdf (
   echo "oid pdf file found"
   del %WORKSPACE%\%SubFolder%\Assessment_diff.pdf
)

 
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
REM 判斷版本差異是否存在 , 如果存在的話才需要做掃描

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

if exist %WORKSPACE%\%SubFolder%\new.fpr (
  echo "clear new record"
  del %WORKSPACE%\%SubFolder%\new.fpr
)

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
   sourceanalyzer.exe -b %JOB_NAME% -clean
   sourceanalyzer.exe -b %JOB_NAME% msbuild /t:rebuild %WORKSPACE%\%SubFolder%\WebApplicationFrontSolution.sln
   sourceanalyzer.exe -b %JOB_NAME% -scan -verbose -Xmx14G -format "fpr" -f "%WORKSPACE%\%SubFolder%\new.fpr"
)
 
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
REM 如果有 old.fpr 做 merge 動作
set SubFolder=WebApplicationFrontSolution

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
  if exist %WORKSPACE%\%SubFolder%\old.fpr (
     echo "merge old record with new record"
     FPRUtility.bat -merge -project %WORKSPACE%\%SubFolder%\new.fpr -source %WORKSPACE%\%SubFolder%\old.fpr
  )
)

 
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
REM 判斷版本差異是否存在 , 如果存在的話才需要轉換成pdf檔案

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All_New.xml
set SubFolder=WebApplicationFrontSolution

for /f %%i in (%WORKSPACE%\%SubFolder%\git_diff.txt) do set version=%%i

if "%GIT_COMMIT%" NEQ "%version%" (
   move /Y %WORKSPACE%\%SubFolder%\new.fpr %WORKSPACE%\%SubFolder%\old.fpr
REM   ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -f "%WORKSPACE%\%SubFolder%\Assessment_diff.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
   ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -filterSet "Quick View" -f "%WORKSPACE%\%SubFolder%\Assessment_diff.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
)
 
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
REM 產生完整的報告出來

set FORTIFY_TEMPLATE=D:\FortifyTemplate\MyCompany_All.xml
set SubFolder=WebApplicationFrontSolution

REM ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -f "%WORKSPACE%\%SubFolder%\Assessment_all.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"

ReportGenerator.bat -template %FORTIFY_TEMPLATE% -format "pdf" -filterSet "Quick View" -f "%WORKSPACE%\%SubFolder%\Assessment_all.pdf" -source  "%WORKSPACE%\%SubFolder%\old.fpr"
 
執行 Windows 批次指令
?

指令
可以參考可用環境變數清單
REM 最後同步專案版本資訊

set SubFolder=WebApplicationFrontSolution
echo %GIT_COMMIT% > %WORKSPACE%\%SubFolder%\git_diff.txt
 
Invoke Dependency-Check
Dependency-Check installation
?

6.1.6
Arguments
?
--format ALL

Skip if triggered by SCM changes?

Skip if triggered by upstream changes?

建置後動作

Publish BOM to Dependency-Track

Publish BOM to Dependency-Track
Dependency-Track project?
WebApplicationFrontSolution

Artifact?
bom.json

Enable synchronous publishing mode?

Update project properties?

Override global settings?
 
 
可編式電子郵件通知
?

Allows the user to disable the publisher, while maintaining the settings

Disable Extended Email Publisher
?
Project From
專案收件人清單
?
該接收到這個專案通知的電子郵件信箱清單,以半形逗號分隔。
user1@MyCompany.com.tw,user2@MyCompany.com.tw
專案回覆清單
?
這個專案 Reply-To 標題裡的電子郵件信箱清單,以半形逗號分隔。
$DEFAULT_REPLYTO
內容類型
?

預設內容類型
預設主旨
?
$DEFAULT_SUBJECT
預設內容
?
$DEFAULT_CONTENT

Changes:
${CHANGES, showPaths=true, format="%a: %r %p \n--\"%m\"", pathFormat="\n\t- %p"}
附件
?
可以使用 'module/dist/**/*.zip' 這類萬用字元。請參考 Ant fileset 的 @includes,了解詳細格式。基本目錄就是工作區。
WebApplicationFrontSolution/Assessment_all.pdf , WebApplicationFrontSolution/Assessment_diff.pdf, dependency-check-report.html
附上建置紀錄
?

Do Not Attach Build Log
內容 Token 參考?
 
電子郵件通知?

收件人
以空白隔開的收件人清單。可以用 $PARAM 這樣參考建置參數。建置失敗、變成不穩定或是回復成穩定時都會寄送郵件。
user1@MyCompany.com.tw user2@MyCompany.com.tw

每次建置不穩定都寄送郵件
?

分別寄送郵件給讓建置爛掉的每個人
REST API
Jenkins 2.361.1


(完)

相關

[研究]Jenkins作業(Job)組態的Dependency-Track(DT)設定
https://shaurong.blogspot.com/2022/09/jenkinsjobdependency-trackdt.html

[研究]Git上傳、Jenkins自動編譯、發佈 ASP.NET WebForms方案/專案到目的網站根目錄
https://shaurong.blogspot.com/2022/09/gitjenkins-aspnet-webforms.html

[研究][ASP.NET]MSBuild 17.3.1 語法參數說明
https://shaurong.blogspot.com/2022/09/aspnetmsbuild-1731.html

[研究][BAT]從Jenkins拷貝 Fortify SCA 報告
https://shaurong.blogspot.com/2022/03/batjenkins-fortify-sca.html

[研究]Jenkins 找不到 .NET SDK 'Microsoft.NET.Sdk.Web'
https://shaurong.blogspot.com/2022/02/jenkins-net-sdk-microsoftnetsdkweb.html

[研究]Jenkins : error MSB4100 條件 必須評估為布林值
https://shaurong.blogspot.com/2022/02/jenkins-error-msb4100.html

[研究]Jenkins + Fortify SCA,因 Visual Studio 2019 升級 2022,變更 MSBuild 目錄
https://shaurong.blogspot.com/2022/01/jenkins-fortify-sca-visual-studio-2019.html

[研究]疑似 Fortify SCA 或 Jenkins 產生的殘檔
https://shaurong.blogspot.com/2021/11/fortify-sca-jenkins.html

[研究][Gitea + Jenkins + Fortify SCA]此專案參考這部電腦上所缺少的 NuGet 套件。請啟用 NuGet 套件還原
https://shaurong.blogspot.com/2021/08/gitea-jenkins-fortify-sca-nuget-nuget.html

[研究] OWASP Dependency-Track 4.2.2 第三方元件安全管理安裝 (Ubuntu 20.04.2 LTS x64)
https://shaurong.blogspot.com/2021/07/owasp-dependency-track-422-ubuntu-20042.html

[研究]Jenkins 2.289.2-1.1 stable 安裝(CentOS 8.4 x64)
https://shaurong.blogspot.com/2021/07/jenkins-22892-11-stable-centos-84-x64.html

[研究] Jenkins 建置失敗
https://shaurong.blogspot.com/2021/04/jenkins.html

[研究] Jenkins 2.190.3 舊主機搬移到新主機(Win2019)
https://shaurong.blogspot.com/2019/12/jenkins-21903-win2019.html

[研究] Jenkins 2.121.1 LTS + JDK 8 + Maven 3.5.3 安裝 (Windows 2016)
https://shaurong.blogspot.com/2018/06/jenkins-21211-lts-jdk-maven-windows-2016.html

[研究] Jenkins 2.121.1 LTS + JDK 安裝 (Windows 2016)
https://shaurong.blogspot.com/2018/06/jenkins-21211-lts-jdk-windows-2016.html

[研究] Jenkins 2.128 Weekly 安裝 (Windows 2016)
https://shaurong.blogspot.com/2018/06/jekins-2128-weekly-windows-2016.html

[研究] Jenkins 2.121.1 LTS 安裝 (Windows 2016)
https://shaurong.blogspot.com/2018/06/jekins-21211-lts-windows-2016.html

[研究] Jenkins 2.68.1-1 安裝 (CentOS 7.3 x64)
https://shaurong.blogspot.com/2017/07/jenkins-2681-1-centos-73-x64.html

[研究] Jenkins 1.635 安裝 (CentOS 7.1 x64)
https://shaurong.blogspot.com/2015/10/jenkins-1635-centos-71-x64.html

[研究] Jenkins 1.635 安裝 (Windows 2012 R2)
https://shaurong.blogspot.com/2015/10/jenkins-1635-windows-2012-r2.html


2021年8月6日 星期五

[研究]OWASP Dependency Track 4.3 (war 或 jar 版) 安裝 (CentOS 8.4 x64)

[研究]OWASP Dependency Track 4.3 (war 或 jar 版) 安裝 (CentOS 8.4 x64)

官方網站
https://owasp.org/www-project-dependency-track/
https://dependencytrack.org/

Docker 版安裝看這裡
https://dependencytrack.org/
https://owasp.org/www-project-dependency-track/

WAR 版佈署看這裡
Deploying the Executable WAR
https://docs.dependencytrack.org/getting-started/distributions/
Deploying the WAR
https://docs.dependencytrack.org/getting-started/deploy-war/
指令 java -Xmx8G -jar dependency-track-bundled.war

上面沒說 war 去哪下載,直接 Google 找 dependency-track-bundled.war

dependency-track-bundled.jar 4.3.1 版 (是 jar,不是 war)
https://github.com/DependencyTrack/dependency-track/releases

下載、安裝 (需要 Java ,請自行先安裝 )


[john@localhost ~]$ su root
Password:
[root@localhost john]# cd /opt
[root@localhost ~]# cd /opt
[root@localhost ~]# wget  https://github.com/DependencyTrack/dependency-track/releases/download/4.3.1/dependency-track-bundled.jar

[root@localhost opt]# java -Xmx8G -jar dependency-track-bundled.jar
...(略)
2:17:01.089 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2010.meta
02:17:02.845 INFO [NistMirrorTask] Downloading...
02:17:02.852 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2011.json.gz
02:17:03.256 INFO [NistMirrorTask] Downloading...
02:17:04.460 INFO [NistMirrorTask] Uncompressing nvdcve-1.1-2011.json.gz
02:17:04.709 INFO [NvdParser] Parsing nvdcve-1.1-2011.json
02:17:36.375 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2011.meta
02:17:37.937 INFO [NistMirrorTask] Downloading...
02:17:37.941 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2012.json.gz
02:17:38.345 INFO [NistMirrorTask] Downloading...
02:17:42.070 INFO [NistMirrorTask] Uncompressing nvdcve-1.1-2012.json.gz
02:17:42.301 INFO [NvdParser] Parsing nvdcve-1.1-2012.json
Killed
[root@localhost opt]# 

再一次 


[root@localhost opt]# java -Xmx8G -jar dependency-track-bundled.jar
...(略,所有 NPM 重新檢查下載,nvdcve 不會重新下載,從 2013 開始處理 ( 2012 不理會了?))
02:25:29.685 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2016.meta
02:25:31.307 INFO [NistMirrorTask] Downloading...
02:25:31.312 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-2017.json.gz
02:25:31.707 INFO [NistMirrorTask] Downloading...
02:25:33.320 INFO [NistMirrorTask] Uncompressing nvdcve-1.1-2017.json.gz
02:25:33.702 INFO [NvdParser] Parsing nvdcve-1.1-2017.json
Killed
[root@localhost opt]# 

再一次,不設定 RAM 看看 


[root@localhost opt]# java -jar dependency-track-bundled.jar
02:28:28.239 INFO [Config] --------------------------------------------------------------------------------
02:28:28.243 INFO [Config] OS Name:      Linux
02:28:28.243 INFO [Config] OS Version:   4.18.0-305.3.1.el8.x86_64
02:28:28.243 INFO [Config] OS Arch:      amd64
02:28:28.246 INFO [Config] CPU Cores:    4
02:28:28.261 INFO [Config] Max Memory:   928.0 MB (973,078,528.0 bytes)
02:28:28.262 INFO [Config] Java Vendor:  Red Hat, Inc.
02:28:28.264 INFO [Config] Java Version: 11.0.12+7-LTS
02:28:28.264 INFO [Config] Java Home:    /usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64
02:28:28.265 INFO [Config] Java Temp:    /tmp
02:28:28.265 INFO [Config] User:         root
02:28:28.265 INFO [Config] User Home:    /root
02:28:28.265 INFO [Config] --------------------------------------------------------------------------------
02:28:28.265 INFO [Config] Initializing Configuration
02:28:28.266 INFO [Config] System property alpine.application.properties not specified
02:28:28.266 INFO [Config] Loading application.properties from classpath
02:28:28.274 INFO [Config] --------------------------------------------------------------------------------
02:28:28.275 INFO [Config] Application:  Dependency-Track
02:28:28.275 INFO [Config] Version:      4.3.1
02:28:28.275 INFO [Config] Built-on:     2021-08-03T15:40:43Z
02:28:28.275 INFO [Config] --------------------------------------------------------------------------------
02:28:28.276 INFO [Config] Framework:    Alpine
02:28:28.276 INFO [Config] Version :     1.10.1
02:28:28.276 INFO [Config] Built-on:     2021-08-03T13:50:31Z
02:28:28.276 INFO [Config] --------------------------------------------------------------------------------
02:28:28.296 INFO [RequirementsVerifier] Initializing requirements verifier
02:28:28.297 ERROR [RequirementsVerifier] Dependency-Track requires a minimum of 4GB RAM (heap). Cannot continue. To fix, specify -Xmx4G (or higher) when executing Java.

^CShutting down application
[root@localhost opt]# 

再一次,設定 4GB  RAM 看看  


[root@localhost opt]# java -Xmx4G -jar dependency-track-bundled.jar
...(略,所有 NPM 重新下載,nvdcve 不會重新下載,從剛才失敗的 nvdcve-1.1-2017.json.gz 開始處理)
02:39:37.699 INFO [NistMirrorTask] Initiating download of https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.meta
02:39:38.757 INFO [NistMirrorTask] Downloading...
02:39:38.772 INFO [NistMirrorTask] NIST mirroring complete
02:39:38.849 INFO [NistMirrorTask] Time spent (d/l):   13720ms
02:39:38.850 INFO [NistMirrorTask] Time spent (parse): 498940ms
02:39:38.850 INFO [NistMirrorTask] Time spent (total): 541289ms

疑似啟動完畢,瀏覽器連上 http://localhost:8080/login 看看

( 是 http,不是 https,只能連 localhost,別的電腦看得到 login 畫面,按 Login 按鈕沒反應)

第一次登入帳號 admin,密碼 admin,會立刻要求變更密碼,再次登入。


(完)

2021年7月24日 星期六

[研究] OWASP Dependency-Track 4.2.2 第三方元件安全管理安裝 (Ubuntu 20.04.2 LTS x64)

[研究] OWASP Dependency-Track 4.2.2 第三方元件安全管理安裝 (Ubuntu 20.04.2 LTS x64)

2021-07-24

Dependency-Track 是一個智能組件分析平台 (intelligent Component Analysis platform),允許組織識別和降低軟件供應鏈中的風險。Dependency-Track 通過利用「軟件物料清單」(Software Bill of Materials , SBOM))的功能,採用了一種獨特且非常有益的方法。這種方法提供了傳統「軟件組合分析」 (Software Composition Analysis , SCA) 無法實現的功能。

Dependency-Track 監控其產品組合中每個應用程序所有版本的組件使用情況,以便主動識別整個組織的風險。該平台採用 API 優先設計,非常適合在 CI/CD 環境中使用。

********************************************************************************

硬體需求:

 最低:4 GB RAM 推薦:16 GB RAM

 最低:2 CPU cores 推薦:4 CPU cores

********************************************************************************

安裝,續這篇

[研究]Docker Compose 1.29.2 安裝 (Ubuntu 20.04.2 LTS x64)
https://shaurong.blogspot.com/2021/07/docker-compose-1292-ubuntu-20042-lts-x64.html

參考

OWASP Dependency-Track
https://owasp.org/www-project-dependency-track/

Dependency-Track is distributed as Docker containers.

Docker Compose

curl -LO https://dependencytrack.org/docker-compose.yml

docker-compose up -d

Docker Swarm

curl -LO https://dependencytrack.org/docker-compose.yml

docker swarm init

docker stack deploy -c docker-compose.yml dtrack

********************************************************************************

Docker Compose

執行


tom@ubuntu20042:~$ curl -LO https://dependencytrack.org/docker-compose.yml 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current   
                                 Dload  Upload   Total   Spent    Left  Speed
100   367    0   367    0     0    491      0 --:--:-- --:--:-- --:--:--   491
100  4172  100  4172    0     0   3526      0  0:00:01  0:00:01 --:--:-- 18378
tom@ubuntu20042:~$ 

執行 (必須用 sudo 執行,否則會出錯)


tom@ubuntu20042:~$ sudo docker-compose up -d
Creating network "tom_default" with the default driver
Creating volume "tom_dependency-track" with default driver
Pulling dtrack-apiserver (dependencytrack/apiserver:)...
latest: Pulling from dependencytrack/apiserver
801bfaa63ef2: Pull complete
4a641feb108f: Pull complete
4774cd11fd18: Pull complete
e7fd8dcbde96: Pull complete
eb4251459806: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:abe4431845152dcc4c880b4804bacee85957c0af1bd5c4907de8b74874abc8bf   
Status: Downloaded newer image for dependencytrack/apiserver:latest
Pulling dtrack-frontend (dependencytrack/frontend:)...
latest: Pulling from dependencytrack/frontend
0a6724ff3fcd: Pull complete
2a20c8805afe: Pull complete
a9b20f2cd613: Pull complete
052722e881c1: Pull complete
d5a0bab8d3a3: Pull complete
0bf9a1fd5e8d: Pull complete
e48b15c2fbc5: Pull complete
5d932990ab62: Pull complete
c005b81df4bc: Pull complete
4fea2642779f: Pull complete
a3ed95caeb02: Pull complete
7e1abffa3584: Pull complete
Digest: sha256:39eed5e251176100a2bb255c386a415f65c6cb84ff133465943a8ec2b6f0b92c
Status: Downloaded newer image for dependencytrack/frontend:latest
Creating tom_dtrack-apiserver_1 ... done
Creating tom_dtrack-frontend_1  ... done

tom@ubuntu20042:~$ sudo docker-compose up -d
tom_dtrack-apiserver_1 is up-to-date
tom_dtrack-frontend_1 is up-to-date
tom@ubuntu20042:~$ 

********************************************************************************

如果是使用虛擬機器環境,建議此時 PowerOff 關機,做一份快照 Snapshot。

原因請看下面

[研究] OWASP Dependency-Track 4.2.2 有時登入無反應,狀態一直 Restarting
https://shaurong.blogspot.com/2021/07/owasp-dependency-track-422-restarting.html

********************************************************************************

根據這裡 docker 設定檔 docker-compose.yml  中內容

Deploying Docker Container | Dependency-Track
https://docs.dependencytrack.org/getting-started/deploy-docker/

推測有2個連線網址

http://localhost:8081/

http://localhost:8080/

根據這裡,預設帳號密碼都是 admin,第一次登入會要求變更密碼,登出,再次登入。
https://docs.dependencytrack.org/getting-started/initial-startup/


(下圖) 和 CentOS 上安裝 Dependency-Track 情況一樣,遠端看得到登入畫面,但是按下 Login 無反應





要使用 DependencyTrack (以下簡稱DT),需要先準備好一份SBOM(Software Bill of Material,軟體物料清單),然後發送給DT,等待DT完成掃描檢測之後,在DT的管理介面上查看結果。

在開發一個應用程式時,可能會用到一些第三方套件 (元件、Component、Packages),SBOM包含了這些元件的訊息。要建立SBOM,若使用Gradle當建構工具,可用cyclonedx-gradle-plugin建立SBOM;如果用maven,可以用CycloneDX Maven Plugin。其他構建工具支持,可去CycloneDX的官網上查找。

DT官方建議用CyCloneDX 或 DependencyTrack Jenkins Plugin 外掛程式來完成BOM清單的推送。

Generating Software Bill of Materials - Jenkins Pipeline

********************************************************************************

補充:組態檔(Configuration) 所在
https://docs.dependencytrack.org/getting-started/configuration/

tom@ubuntu20042:~$ sudo find / -name application.properties -print
/var/lib/docker/overlay2/5e78f2967e4746985aa80f0b336986666857ce77d41aa1c4dd61a7bb540dd179/diff/tmp/jetty-0_0_0_0-8080-dependency-track-apiserver_war-_-any-4035016832563111209/webapp/WEB-INF/classes/application.properties
/var/lib/docker/overlay2/5e78f2967e4746985aa80f0b336986666857ce77d41aa1c4dd61a7bb540dd179/merged/tmp/jetty-0_0_0_0-8080-dependency-track-apiserver_war-_-any-4035016832563111209/webapp/WEB-INF/classes/application.properties

find: ‘/run/user/1000/gvfs’: Permission denied
tom@ubuntu20042:~$ 

********************************************************************************

補充:container 和 docker-compose 目前狀態


tom@ubuntu20042:~$ sudo docker-compose ps
         Name                       Command                  State                        Ports                  
-----------------------------------------------------------------------------------------------------------------
tom_dtrack-apiserver_1   /bin/sh -c java $JAVA_OPTI ...   Up (healthy)   0.0.0.0:8081->8080/tcp,:::8081->8080/tcp
tom_dtrack-frontend_1    /docker-entrypoint.sh ngin ...   Up             0.0.0.0:8080->8080/tcp,:::8080->8080/tcp
tom@ubuntu20042:~$ 

(完)

相關

Dependency-Track | Software Bill of Materials (SBOM) Analysis | OWASP
https://dependencytrack.org/

使用相依性追蹤程式延伸模組來規劃和追蹤小組和組織之間的相依性 - Azure DevOps | Microsoft Docs
https://docs.microsoft.com/zh-tw/azure/devops/boards/extensions/dependency-tracker?view=azure-devops

用DependencyTrack管理第三方组件安全(一)
https://mawei.blog/2020/dependency-practice-guide-part-one

用DependencyTrack管理第三方组件安全(二)
https://mawei.blog/2020/dependency-practice-guide-part-two

用DependencyTrack管理第三方组件安全(三)
https://mawei.blog/2020/dependency-practice-guide-part-three

Dependency-Track vs Dependency-Check Comparison
https://docs.dependencytrack.org/odt-odc-comparison/