2018年4月16日 星期一

[研究][ASP.NET] 用了 AntiXssEncoder.HtmlEncoder 仍被 Fortify SCA v17.20 說有問題

[研究][ASP.NET] 用了 AntiXssEncoder.HtmlEncoder 仍被 Fortify SCA v17.20 說有問題

2018-04-16

用了 AntiXssEncoder.HtmlEncoder 仍被 Fortify SCA v17.20 說有問題
Cross-Site Scripting: Reflected

開始思考:

  • Fortify SCA v17.20 白箱測試工具是否認得 AntiXssEncoder.HtmlEncode?不確定
  • 是否有更新版本 Fortify SCA?沒有
  • Fortify SCA的 rule 是否有更新?是
  • 是否程式本身問題?

檢查程式碼,發現問題,這個 function 實際上有兩條路徑,一條有用到 AntiXssEncoder.HtmlEncode,另一條沒有用到 AntiXssEncoder.HtmlEncode。

public static string CheckURLString(string userInput)
    {
         if (checkForSQLInjection(userInput))
         {
             throw new System.Exception(funcABC(userInput));
             return "";
         }
        else
            return AntiXssEncoder.HtmlEncode(funcDEF(userInput), true);
    }

修改一下
public static string CheckURLString(string userInput)
    {
         if (checkForSQLInjection(userInput))
         {
             throw new System.Exception(funcABC(userInput));
             return AntiXssEncoder.HtmlEncode(funcABC(userInput), true);
         }
        else
            return AntiXssEncoder.HtmlEncode(funcDEF(userInput), true);
    }

測試一下,過了。

所以 Fortify Static Code Analyzer ( SCA ) v17.20 是認得 AntiXssEncoder.HtmlEncoder 的。

當然就實際觀點而言,return ""; 實際上是安全的,這是 Fortify SCA 誤判。

但是稍微改一下程式,可以避免 Fortify SCA 報告問題,省去向負責的同事或業主解釋的麻煩。

(完)

相關

[研究][ASP.NET] Fortify SCA v17.20 報告 Web.config ( Insecure Transport: Datbase) Critical 問題
http://shaurong.blogspot.com/2018/04/aspnet-fortify-sca-v1720-webconfig.html

[研究][ASP.NET] 用了 AntiXssEncoder.HtmlEncoder 仍被 Fortify SCA v17.20 說有問題
http://shaurong.blogspot.com/2018/04/aspnet-antixssencoderhtmlencoder.html

[研究][JavaScript] CKeditor 4.9.1 與 Fortify SCA v17.20
http://shaurong.blogspot.com/2018/04/javascript-ckeditor-491-fortify-sca.html

[研究][ASP.NET][JavaScript] hideShowPassword 與 Fortify SCA 白箱測試
http://shaurong.blogspot.com/2018/04/aspnetjavascript-hideshowpassword.html

沒有留言:

張貼留言