SAST 工具評比報告 — asphalt9cn_web 碼庫

評估日期:2026-06-18 | 評估者:AI 輔助分析

⚙ 模式宣告:本次採用模式 B — 報告可信度、一致性與可操作性研判
理由:未取得 asphalt9cn_web 原始碼壓縮檔,無法以事實基準逐筆裁決 TP/FP。
精確度與漏報結論須取得原始碼後依模式 A 重做方為有效。

B0. 可比性與掃描策略對位

項目工具 A Checkmarx工具 B Mend SAST
掃描標的asphalt9cn_web (Scan Tag)ACD_RD1 專案(同一碼庫)
LOC276,903138,168 / 158,626
檔案數789573 / 733
掃描時間2025-12-08(19m59s)2026-06-12(40m05s)
語言PHP (18,864), JavaScript (172)PHP, JavaScript/TypeScript
Preset / 規則集OWASP TOP 10 – 202149 CWEs tested
合規框架OWASP 2021, PCI DSS v4.0, NIST 800-53, ASD STIG 6.1, FISMA 2014, CWE Top 25, SANS Top 25 等 15+ 框架OWASP Top 10(圖表呈現)
掃描來源ZIP 上傳本機掃描(ScanPack)

LOC 差異研判:A 納入更多靜態資源/第三方庫(如 ckeditor),或計算規則不同。兩者掃描同一碼庫根目錄 asphalt9cn-web/,由報告內檔案路徑可確認。掃描時間相隔約 6 個月,無證據顯示碼庫有結構性改動。

B1. 客觀欄位與可操作性訊號記錄

工具 A Checkmarx — 總覽

維度數據
總發現量19,065(SAST 19,036 + SCA 29)
嚴重度結構Critical 4,450 (23.3%) / High 7,648 (40.1%) / Medium 6,967 (36.5%)
Low+Info 已於報告匯出時排除
高價值占比Critical+High = 63.5%
分流狀態100% To Verify(0 Confirmed / 0 Urgent)
密度68.75 findings / KLOC
資料流呈現Source file:line + Dest file:line,各附 1 行 snippet(共 2 行)
框架版本OWASP 2021, PCI DSS v4.0, ASD STIG 6.1(均為現行版本)

工具 A — 發現類型分布

類型CWE嚴重度筆數
Stored_XSS79Critical2,559
SQL_Injection89Critical1,792
Second_Order_SQL_Injection89Critical96
Stored_Code_Injection94Critical3
Reflected_XSS79High7,579
Relative_Path_Traversal22High41
SSRF918High15
Prototype_Pollution1321High8
Parameter_TamperingMedium2,607
CSRF352Medium1,555
Unchecked_Input_for_Loop606Medium1,244
Cookie flags ×31004/—Medium1,080
Privacy_Violation359Medium120
Hardcoded_Password798Medium117
其他 MediumMedium~244

工具 B Mend SAST — 總覽

維度數據
總發現量2,688
嚴重度結構Critical 0 (0%) / High 1,174 (43.7%) / Medium 613 (22.8%) / Low 901 (33.5%)
高價值占比High = 43.7%(無 Critical 等級)
分流狀態每筆標示 Exploitable flag + Rating 數值分數
(抽樣全為 EXPLOITABLE: FALSE)
密度19.5 findings / KLOC
資料流呈現完整 multi-step data flow(2~11 步),每步含 file:line + code
每筆附帶欄位Severity, File, Line, Sink, Tainted Input, Data Flows count, Rating, Probability, Endpoint Access, Exploitable, Detection Date
CWE 涵蓋49 CWEs(含 SSRF, NoSQL Injection, Deserialization 等現代威脅)

工具 B — 發現類型分布

類型CWE嚴重度筆數
Cross-Site Scripting79High810
SQL Injection89High278
File Manipulation73High45
Session Fixation384High20
Path/Directory Traversal22High9
FTP Command Injection78High8
Command Injection78High4
File Upload434Medium7
Hidden HTML Input472Medium466
Hardcoded Password798Medium143
Error Messages Info Exposure209Medium4
Cookie without HttpOnly1004Low702
Cookie Injection20Low138
Weak Encryption326Low46
HTTP Response Splitting113Low8

B2. 報告自證誤報研判

工具 A 抽樣(依報告所印資料流判斷)

#類型檔案資料流摘要研判
1Stored_XSS/html/vr/phpmailer/class.pop3.phpfgets() → print_r()合理但低利用性 — phpmailer 內部除錯,需攻擊者控制 POP3 回應
2Stored_XSS/html/main.php L92→L112fetch() → echo $name✓ 可信 — DB 取值直接 echo 無跳脫
3SQL_Injection/html/control/excel_income.php L41→L429$_COOKIE → prepare($str_total)✓ 可信 — Cookie 拼入 SQL
4SQL_Injection/html/control/excel_income.php L12→L429$_GET['ipAddress'] → prepare()✓ 可信 — GET 直接拼入 SQL
5SSRF/html/qr-rank/json_result.php L38→L41$_GET['d'] → file_get_contents(URL)✓ 可信但降級 — 已有 urlencode,仍可操縱 URL path
6Reflected_XSS/html/control/excel_income.php L12→L450$_GET → echo $total_create⚠ 待確認 — 中間經 DB 查詢,流程長,需原始碼驗證

小結:6 筆中 4 筆可信、1 筆低利用性、1 筆待確認。但每筆僅 2 行片段(source + sink),中間資料流邏輯不可見。

工具 B 抽樣(依報告所印資料流判斷)

#類型檔案資料流摘要研判
1Path Traversal/html/source.php L3→L4$_GET['url'] → $url → file_get_contents($url)(3 步)✓ 高度可信
2File Manipulation/html/control/add_event.php L215→L216$_GET['file'] → $file → unlink($file_path.$file)(3 步)✓ 高度可信 — 任意刪檔
3Command Injection/html/control/add_store.php L340$_POST['system'] → system()(2 步)✓ 高度可信 — 直接 RCE
4XSS/html/control/adm_remain.php L194→L361$_GET['page'] → $page → echo(3 步)✓ 可信 — >=1 條件不阻字串 payload
5SQL Injection/html/control/add_news.php L180→L212$_GET['k'] → $key_name → prepare("select $key_name...")(3 步)✓ 高度可信 — column name injection
6Hidden HTML Input/html/vr/contact.php L223<input type="hidden" name="do">低價值/資訊級 — 無汙染源
7Cookie w/o HttpOnly多檔案 setcookieRating 0.2, Exploitable FALSE低價值/最佳實務

小結:7 筆中 5 筆高度可信(完整 multi-step 資料流),2 筆為低價值/最佳實務類。資料流描述清晰,每步驟可定位。

B3. 交叉一致性比對

弱點類別工具 A工具 B一致性
XSS (CWE-79)10,138 (Stored 2559 + Reflected 7579)810⚠ 量差 12.5× — A 以 source×sink 組合計筆
SQL Injection (CWE-89)1,888 (1792 + 2nd Order 96)278⚠ 量差 6.8× — 計筆方式差異
Path Traversal (CWE-22)419✓ 方向一致
File Manipulation (CWE-73)未單獨分類45⚠ A 可能歸入 Path Traversal
SSRF (CWE-918)150(規則有覆蓋但無 finding)⚠ B 漏報?需確認規則邏輯
Command Injection (CWE-78)0(未報出)12 (FTP 8 + OS 4)⚠⚠ A 未報 — 含直接 RCE
CSRF1,5550B 規則集無 CSRF
Parameter_Tampering2,6070B 規則集無此類
Hidden HTML Input (CWE-472)0466A 不報此類
Cookie flags1,080702✓ 方向一致
Hardcoded Password (CWE-798)117143✓ 一致
Session Fixation (CWE-384)020B 報出,A 未涵蓋
關鍵落差(待人工複查):
  1. Command Injection:B 報出 $_POST['system'] → system()(/html/control/add_store.php L340),A 完全未報。若為 TP,屬最高危弱點,A 存在顯著盲區。
  2. SSRF:A 報 15 筆(file_get_contents with user-controlled URL),B 規則覆蓋但 0 筆。需確認 B 是否因 urlencode 存在而不報。
  3. XSS 量差(10,138 vs 810):需確認是純計筆方式差異或 B 有漏報。
  4. Session Fixation (20 筆):B 報出,A Preset 未涵蓋。

B4. CWE 自洽性

工具檢查項目結果
AStored_XSS → CWE-79, SQL_Injection → CWE-89, SSRF → CWE-918✓ 自洽
Parameter_Tampering / CSRF 未標明確 CWE ID⚠ 缺乏標準對位
sink 型態與 CWE 定義一致性✓ 抽樣均符合
B每筆均明確標示 CWE ID✓ 全數自洽
CWE-472 Hidden HTML Input:sink 為 <input type="hidden">符合 CWE 定義但低利用性
CWE-78 Command Injection → system() sink✓ 完全符合

B5. 可操作性研判

訊噪比

指標工具 A工具 B
高價值可處置發現(可利用弱點類)~12,098 (Crit+High)~1,174 (High 全部)
中/低價值最佳實務類~6,967 (Medium 全部)~1,514 (Medium 613 + Low 901)
帳面訊噪比(高價值 ÷ 總量)63.4%43.7%
重複計筆程度高 — 同一 sink 以 6+ tainted input 各計 1 筆低 — 以 sink 為單位,多 source 歸入 data flows
估計唯一修復位置~2,000-3,000(實際可操作)~1,500-2,000

工具 A 帳面 63.4% 高價值比看似較佳,但因計筆方式(每條 tainted input × 每個 sink = 1 finding),同一修復動作被報 5~10 筆。例:excel_income.php 的 prepare($str_total) 一個 sink 就產出 6+ 筆 Critical SQLi。

告警疲勞風險

工具風險等級說明
A極高19,065 筆全數 To Verify。Medium 中 Parameter_Tampering 2607 + CSRF 1555 + Loop Condition 1244 = 5,406 筆純防禦性建議。需大量人力分流。
B中等2,688 筆含 Exploitable flag + Rating score 可快速篩選。Low 901 筆可一次性濾除。

分流就緒度

維度工具 A工具 B
明確嚴重度✓ Critical/High/Medium 三級✓ High/Medium/Low + 數值 Rating
可定位性Source+Dest file:line + 2 行 snippetFile, Line, Sink, 完整 data flow (2-11 steps)
分流輔助❌ 100% To Verify,無 exploitability 判斷✓ Exploitable flag + Rating(可排序優先級)
修復指引類型級描述(非逐筆)類型級 CWE Description + Mitigating Recommendations
合規對位✓✓✓ 15+ 框架,每筆對位△ 僅 OWASP Top 10 圖表

框架時效性

工具框架版本研判
AOWASP Top 10 2021、PCI DSS v4.0、ASD STIG 6.1、OWASP API 2023✓ 時效性佳,貼合 2024-2026 威脅面
BOWASP Top 10(未標年份),49 CWEs 含 SSRF/NoSQL/Deserialization△ 未明示版本,但 CWE 覆蓋含現代威脅

研判結論

一致性(互相佐證之發現)

待人工複查

  1. Command Injection($_POST['system'] → system()):B 報出、A 未報。若為 TP,屬最高危弱點。
  2. SSRF:A 報 15 筆(file_get_contents),B 0 筆。需確認 B 規則邏輯。
  3. XSS 量差(10,138 vs 810):需確認是計筆差異或 B 漏報。
  4. Session Fixation (20 筆):B 報出、A 未涵蓋。

雙向最強論點

最強優點最大弱點
工具 A 合規對位最完整(15+ 框架、每筆對位),含 SCA 組件弱點,覆蓋 LOC 最廣(276K)。SSRF 偵測優於 B。 19,065 筆 100% To Verify + 高重複計筆 + 6,967 筆 Medium 大量為防禦性建議 → 告警疲勞風險極高。每筆僅 2 行 snippet,中間資料流不可見。未報 Command Injection 為潛在盲區。
工具 B 完整 multi-step data flow(最多 11 步)+ Exploitable flag + Rating score → 分流就緒度最高。命中 Command Injection 高危類別。以 sink 計筆,修復效率直接對應。 無 Critical 等級分類。未偵出 SSRF。合規對位薄弱(僅 OWASP Top 10 圖表)。LOC 覆蓋較窄(138K)。CWE-472 Hidden HTML Input 466 筆屬低價值雜訊。

整體可採用性研判

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

工具 B(Mend SAST)在真實導入後較能直接產生可處置的價值。 其 2,688 筆發現已附帶完整資料流路徑、Exploitable 判斷與數值 Rating,資安團隊可立即排序優先級並指派修復,無需逐筆回平台重判。以 sink 為單位的計筆方式讓「一個修復動作消除一筆 finding」直覺對應,修復追蹤效率高。Command Injection 的偵出也顯示其在關鍵高危類別的覆蓋具實戰價值。

工具 A(Checkmarx)的優勢在合規報告完整度與覆蓋廣度。 15+ 合規框架逐筆對位、SCA 組件掃描整合、LOC 覆蓋最廣,適合需產出合規稽核文件的場景。但其 19,065 筆 100% To Verify 的輸出,在未建立完善分流流程前,將對團隊產生顯著的告警疲勞負擔。Medium 中 ~5,400 筆純防禦性建議與高重複計筆,使其需投入較高的後續分流人力才能萃取可操作的修復清單。

仍需於使用者實際碼庫補測之處


聲明:本評估為模式 B,精確度(TP/FP 比率)與漏報(Recall)結論須取得原始碼後依模式 A 重做方為有效。
報告產出時間:2026-06-18