SAST 工具評比報告

工具 A: Mend SAST  vs  工具 B: Checkmarx (CxOne)
評估日期:2026-06-18 | 碼庫:patch_web

📋 本次採用模式:模式 A(精確度+可操作性評估)
原始碼已確認存在,以原始碼為事實基準逐筆查證 TP/FP

第 0 層 — 可比性與掃描策略對位

面向工具 A (Mend SAST)工具 B (Checkmarx/CxOne)
掃描日期2026-06-132026-06-12
專案名稱ACD_RD1_patch_webACD_RD1_Server_Web
語言涵蓋PHP, JavaScript, TypeScriptPHP, JavaScript
檔案數20 / 2134
LOC10,17814,087
掃描耗時1 分 19 秒1 分 46 秒
Preset / 規則集OWASP TOP 10 2025OWASP TOP 10 - 2021
Scanner 類型純 SASTSAST + SCA

判定:兩份報告掃描同一碼庫。工具 B 涵蓋更多子目錄(fa/、nz/ 多語系副本),屬掃描策略選擇,不構成中止比較的理由。

第 1 層 — 客觀欄位與可操作性訊號

🅰 Mend SAST

🅱 Checkmarx (CxOne)

工具 A 發現類型

CWE類型筆數嚴重度性質
CWE-89SQL Injection20High可利用弱點
CWE-73File Manipulation48High可利用弱點
CWE-79Cross-Site Scripting8High可利用弱點
CWE-384Session Fixation7High可利用弱點
CWE-94Code Injection5High可利用弱點
CWE-472Hidden HTML Input50Medium最佳實務
CWE-798Hardcoded Password10Medium可利用弱點

工具 B 主要發現類型 (SAST)

弱點類型筆數嚴重度性質
CSRF149Medium可利用但量大/低價值
Reflected_XSS68High可利用弱點
Client_DOM_Open_Redirect47Medium框架碼/FP
Unchecked_Input_for_Loop35Medium防禦性/低利用
SSRF14High可利用弱點
Loose_Comparison9Medium最佳實務
Open_Redirect8Medium可利用弱點
其他18Medium混合

第 2 層 — 逐筆裁決(代表性抽樣)

2A. 工具 A 抽樣裁決

#CWE檔案裁決原始碼證據
1CWE-798user.phpTP整檔為明文帳密陣列:array("jiahaoluo", "Igs2512")
2CWE-89excel.php:20TP$table/$order 直接嵌入 SQL 字串未參數化
3CWE-384index.php:3TPsession_start() 後無 session_regenerate_id()
4CWE-472index.phpTP(低利用性)隱藏欄位可被竄改,但視業務邏輯決定影響
5CWE-79index.php:11部分 TPjson_encode($_GET['m']) 於 JS context;其餘均用 htmlspecialchars
6CWE-73index.php:167TPfopen('log') 寫入含使用者輸入,有注入風險
7CWE-94待確認include 路徑為固定字串,需逐筆確認
工具 A 抽樣 TP 率:71–86%(7 筆中 5–6 筆為明確/部分 TP)

2A. 工具 B 抽樣裁決

#弱點類型筆數裁決原始碼證據
1CSRF149大量 FP / 低價值內部工具已有 Auth + Azure AD,149筆為重複報告
2Reflected_XSS68大量 FP所有輸出點均用 htmlspecialchars(),工具未辨識防禦
3SSRF14TP$_POST 值直接傳入 curl_init($url),無驗證
4Client_DOM_Open_Redirect47FP(框架碼)vue-router.global.js 為第三方函式庫
5Unchecked_Input_for_Loop35低利用性 TP已有白名單檢查,工具未辨識
6Loose_Comparison9TP(低嚴重度)密碼比較用 =====
工具 B 高價值可處置 TP 率:僅 4.3%(14 筆 SSRF / 322 筆覆蓋)
約 76% 為 FP 或低價值發現。

2B. 漏報查證 (Recall)

關鍵弱點工具 A工具 B
CWE-798 Hardcoded Password✅ 10 筆❌ 未報告
CWE-89 SQL Injection ($table 拼接)✅ 20 筆❌ 未報告
CWE-384 Session Fixation✅ 7 筆❌ 未報告
CWE-918 SSRF❌ 未報告*✅ 14 筆
CWE-352 CSRF❌ 未報告✅ 149 筆(低價值)

* 工具 A 掃描範圍未含 backend/nz/ 目錄,歸入掃描策略取捨

2C. 可操作性與訊噪實測

面向工具 A工具 B
高價值可處置 ÷ 總發現~66%~4.3%
訊噪主要來源CWE-472 (50筆, 33.8%)CSRF+XSS+DOM = 75.8%
告警疲勞風險低(148筆,數小時可分流)極高(348筆全待驗證)
分流就緒度中(有嚴重度/CWE,無資料流細節)結構佳但無效(100% 待驗證)
框架時效性OWASP 2025(最新)OWASP 2021 + 多套合規框架

整體研判

🅰 Mend — 最強優點

精確度高(TP 率 71–86%)且聚焦高危弱點。獨家命中 SQLi、Hardcoded Password、Session Fixation 三項高危。報告精簡,高價值占比 66%。

最大弱點

掃描範圍排除部分子目錄致漏報 SSRF。報告缺 Source→Sink 資料流細節。

🅱 Checkmarx — 最強優點

資料流呈現完整(Source/Destination + Code Snippets),唯一命中 SSRF。多套合規框架對位適合合規場景。

最大弱點

訊噪比極差(高價值 TP 僅 4.3%),76% 為 FP/低價值。100% To Verify 未分流。漏報 SQLi、Hardcoded PW、Session Fixation。

📌 整體可採用性研判

在「精確度 × 可操作性 × 時效性」三軸下:

工具 A (Mend) 在本碼庫中明顯優於工具 B:抽樣精確度 71–86% vs 4.3%;獨家命中 3 項高危弱點;148筆高價值占比 66%,數小時可完成分流;OWASP 2025 最新框架。

工具 B (Checkmarx) 實際可用性受嚴重限制:348筆中僅 14筆 SSRF 為高價值發現,76% 為低價值/誤報,全數未分流。導入後需 3–5 工作天人工重判,且仍漏報真正高危弱點。適合作為補充掃描工具,非主力 SAST 方案。

⚠ 本評估有效範圍僅限本碼庫;涉及自研框架解析、動態行為等須標示「需於使用者實際碼庫補測」。


本報告由 AI 依據兩份 SAST 掃描報告與原始碼進行模式 A 精確度+可操作性評估產出|2026-06-18