2012-02-24 39 views
0

我在幾個非常大的項目上運行Fortify(2.6.5),但它沒有標出幾個關鍵問題,它確實必須這樣做。看起來好像Fortify對名爲'password'的變量進行了一些模式匹配,然後執行數據流分析。這很好,有助於確保隱私侵犯不會發生在敏感數據上,例如將它們寫入記錄器(在調試中)。Fortify 360 - 添加'密碼'別名?

這一切都很好,但我們有一些密碼通過其他變量名稱(如「憑證」)傳遞到系統中的情況,以及需要在相同級別嚴格處理的其他機密信息處理,因爲Fortify會處理包含字符串'password'的變量!

是否有一些簡單的方法可以添加/配置這樣的關鍵字列表,以便Fortify按照「密碼」操作它們?

回答

1

「簡單」取決於您的舒適程度與自定義規則。您可以使用CharacterizationRule將一個+ PRIVATE污點標誌(與隱私違規規則相關聯的污點)添加到名爲「憑證」的變量。

這裏的結構匹配規則時,你需要得到一個小例子片斷你開始:

  VariableAccess va: va.variable.name matches "(?i).*credential.*" and 
           not va in [AssignmentStatement: lhs.location is va] 
           and 
           (va.variable.type.name == "java.lang.String" or 
           va.variable.type.name == "java.lang.StringBuffer" or 
           va.variable.type.name matches "byte.*" or 
           va.variable.type.name matches "char.*") 
+0

謝謝!並不是人們希望的簡單解決方案,因爲Fortify如何識別密碼是什麼,以及什麼不是密碼(無需遍歷所有代碼並在任何地方添加Fortify註釋),但它會做。我會給它一個機會... – 2012-02-27 09:46:47

0

有一個與AWB自定義規則嚮導來做到這一點更簡單的方法。從規則類型列表中選擇「特徵規則」,然後選擇「私有源特徵」。

您的變量「憑證」將成爲祕密或私人數據的來源。只需按照嚮導,它會使用您指定的正則表達式創建一條規則。該表達式區分大小寫,它遵循Java正則表達式方言:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

+0

該功能可能在2.6.5版本中不可用。它當前版本3.40絕對可用。 – 2012-03-31 11:10:57