問題
ASP.NET Core MVC 專案中的 WebAPI Controller 被 Checkmarx V9.4.5.1012 HF24 掃出一堆的 CSRF 問題。
分析
查看它的 Find_CSRF
Rule 中,在過濾掉 Find_CSRF_Sanitize
結果後,
又再加入 Find_ASP_MVC_CSRF()
。
而在 Find_ASP_MVC_CSRF()
中又會去找一些可能跟 DB Update 相關的 Method,如下,
1 | CxList dbUpdateMethods = methods.FindByShortNames(new List<string> { |
詢問同事 Jer 後,有可能是因為 keyword Create 找到了程式中的 HttpClientFactory.CreateClient
所以它就認為它有 CSRF 問題。
將原本用 HttpClientFactory.CreateClient
改成 new HttpClient()
後,
CSRF 的問題果然就不見了。
這個問題原廠的回覆如下,
After reviewing your case, we can confirm the issue is as you suspected. The engine is assuming that the “CreateClient()” method is a database access because it contains the keyword “create”, which is used to search for CSRF vulnerabilities in the code.
只能等待以色列原廠的修復了。