[研究]Mend (WhiteSource)能分辨 ASP.NET WebForm 和 MVC嗎?Fortify SAST (SCA) 、Checkmarx呢?
2026-06-09
Mend (WhiteSource) 對 ASP.NET WebForm 專案卻建議用 MVC 才有的 IsLocalUrl() 進行修改,Mend 不認得專案是 WebForm 或 MVC ? Fortify SAST (SCA) 源碼掃描可以認得 ? Checkmarx 源碼掃描可以認得 ?
*****
是的,這種情況其實很常見。
Mend(前身 WhiteSource)許多安全規則是以 Pattern Matching(模式比對) 或 Framework-Agnostic(框架無關) 的方式運作,因此有時候會出現:
- ASP.NET WebForm 專案
- 掃描結果卻建議使用 MVC 的 Url.IsLocalUrl()
- 或建議使用 ASP.NET Core 的 API
這不代表程式一定有問題,而是 Mend 的 Rule Engine 偵測到「Open Redirect 風險」,然後套用了通用修復建議。
**********
Mend 是否能分辨 WebForm / MVC?
理論上可以部分辨識:
- .aspx → WebForm
- .cshtml → MVC/Razor
- Controller 類別
- Page 類別
但實務上:修補建議(Remediation Guidance)通常是共用的。
**********
Fortify SAST (SCA) 呢?
Fortify 比較強。
它有:
- ASP.NET WebForms Rules
- ASP.NET MVC Rules
- ASP.NET Core Rules
能分析:
public partial class Login : System.Web.UI.Page
知道是 WebForm。
**********
Checkmarx 呢?
Checkmarx 介於兩者之間。
它的 C# Query Engine 能辨識:
- WebForm
- MVC
- ASP.NET Core
**********
三者比較
| 項目 | Mend | Fortify SAST (SCA) | Checkmarx |
|---|---|---|---|
| 分辨 WebForm/MVC | 部分 | 很好 | 好 |
| Data Flow Analysis | 較弱 | 很強 | 很強 |
| Open Redirect 偵測 | 有 | 有 | 有 |
| 修補建議是否依框架調整 | 經常不準 | 通常準確 | 多半合理 |
| ASP.NET WebForm 支援 | 基本 | 完整 | 完整 |
| 誤給 MVC API 建議 | 常見 | 少見 | 偶爾 |
**********
若 Mend 建議:Url.IsLocalUrl(returnUrl)
那幾乎可以判定:Mend 是套用了通用 Open Redirect 修補範本,沒有依據 WebForm 產生專屬修補建議。
(完)
沒有留言:
張貼留言