工具 A: Mend SAST vs 工具 B: Checkmarx (CxOne)
評估日期:2026-06-18 | 碼庫:patch_web
| 面向 | 工具 A (Mend SAST) | 工具 B (Checkmarx/CxOne) |
|---|---|---|
| 掃描日期 | 2026-06-13 | 2026-06-12 |
| 專案名稱 | ACD_RD1_patch_web | ACD_RD1_Server_Web |
| 語言涵蓋 | PHP, JavaScript, TypeScript | PHP, JavaScript |
| 檔案數 | 20 / 21 | 34 |
| LOC | 10,178 | 14,087 |
| 掃描耗時 | 1 分 19 秒 | 1 分 46 秒 |
| Preset / 規則集 | OWASP TOP 10 2025 | OWASP TOP 10 - 2021 |
| Scanner 類型 | 純 SAST | SAST + SCA |
判定:兩份報告掃描同一碼庫。工具 B 涵蓋更多子目錄(fa/、nz/ 多語系副本),屬掃描策略選擇,不構成中止比較的理由。
| CWE | 類型 | 筆數 | 嚴重度 | 性質 |
|---|---|---|---|---|
| CWE-89 | SQL Injection | 20 | High | 可利用弱點 |
| CWE-73 | File Manipulation | 48 | High | 可利用弱點 |
| CWE-79 | Cross-Site Scripting | 8 | High | 可利用弱點 |
| CWE-384 | Session Fixation | 7 | High | 可利用弱點 |
| CWE-94 | Code Injection | 5 | High | 可利用弱點 |
| CWE-472 | Hidden HTML Input | 50 | Medium | 最佳實務 |
| CWE-798 | Hardcoded Password | 10 | Medium | 可利用弱點 |
| 弱點類型 | 筆數 | 嚴重度 | 性質 |
|---|---|---|---|
| CSRF | 149 | Medium | 可利用但量大/低價值 |
| Reflected_XSS | 68 | High | 可利用弱點 |
| Client_DOM_Open_Redirect | 47 | Medium | 框架碼/FP |
| Unchecked_Input_for_Loop | 35 | Medium | 防禦性/低利用 |
| SSRF | 14 | High | 可利用弱點 |
| Loose_Comparison | 9 | Medium | 最佳實務 |
| Open_Redirect | 8 | Medium | 可利用弱點 |
| 其他 | 18 | Medium | 混合 |
| # | CWE | 檔案 | 裁決 | 原始碼證據 |
|---|---|---|---|---|
| 1 | CWE-798 | user.php | TP | 整檔為明文帳密陣列:array("jiahaoluo", "Igs2512") |
| 2 | CWE-89 | excel.php:20 | TP | $table/$order 直接嵌入 SQL 字串未參數化 |
| 3 | CWE-384 | index.php:3 | TP | session_start() 後無 session_regenerate_id() |
| 4 | CWE-472 | index.php | TP(低利用性) | 隱藏欄位可被竄改,但視業務邏輯決定影響 |
| 5 | CWE-79 | index.php:11 | 部分 TP | json_encode($_GET['m']) 於 JS context;其餘均用 htmlspecialchars |
| 6 | CWE-73 | index.php:167 | TP | fopen('log') 寫入含使用者輸入,有注入風險 |
| 7 | CWE-94 | — | 待確認 | include 路徑為固定字串,需逐筆確認 |
| # | 弱點類型 | 筆數 | 裁決 | 原始碼證據 |
|---|---|---|---|---|
| 1 | CSRF | 149 | 大量 FP / 低價值 | 內部工具已有 Auth + Azure AD,149筆為重複報告 |
| 2 | Reflected_XSS | 68 | 大量 FP | 所有輸出點均用 htmlspecialchars(),工具未辨識防禦 |
| 3 | SSRF | 14 | TP | $_POST 值直接傳入 curl_init($url),無驗證 |
| 4 | Client_DOM_Open_Redirect | 47 | FP(框架碼) | vue-router.global.js 為第三方函式庫 |
| 5 | Unchecked_Input_for_Loop | 35 | 低利用性 TP | 已有白名單檢查,工具未辨識 |
| 6 | Loose_Comparison | 9 | TP(低嚴重度) | 密碼比較用 == 非 === |
| 關鍵弱點 | 工具 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/ 目錄,歸入掃描策略取捨
| 面向 | 工具 A | 工具 B |
|---|---|---|
| 高價值可處置 ÷ 總發現 | ~66% | ~4.3% |
| 訊噪主要來源 | CWE-472 (50筆, 33.8%) | CSRF+XSS+DOM = 75.8% |
| 告警疲勞風險 | 低(148筆,數小時可分流) | 極高(348筆全待驗證) |
| 分流就緒度 | 中(有嚴重度/CWE,無資料流細節) | 結構佳但無效(100% 待驗證) |
| 框架時效性 | OWASP 2025(最新) | OWASP 2021 + 多套合規框架 |
精確度高(TP 率 71–86%)且聚焦高危弱點。獨家命中 SQLi、Hardcoded Password、Session Fixation 三項高危。報告精簡,高價值占比 66%。
掃描範圍排除部分子目錄致漏報 SSRF。報告缺 Source→Sink 資料流細節。
資料流呈現完整(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