Fortify 360 - 添加密码'别名?

时间:2012-02-24 16:34:16

标签: fortify

我在几个非常大的项目上运行Fortify(2.6.5),但它没有标出一些关键问题,它确实是必须的。似乎Fortify对名为“password”的变量进行了一些模式匹配,然后执行数据流分析。这很好,有助于确保这些敏感数据不会发生隐私侵犯,例如将它们写入记录器(在调试中)。

这一切都很好,但我们有密码通过其他变量名称(如“凭证”)传递到系统的情况,以及需要在处理时以相同严格程度处理的其他机密信息,因为Fortify使用包含字符串'password'的变量!

是否有一些简单的方法可以添加/配置这样的关键字列表,以便Fortify按照“密码”的方式对其进行操作?

2 个答案:

答案 0 :(得分:1)

“简单”取决于您使用自定义规则的舒适程度。您绝对可以使用CharacterizationRule将名为“credential”的变量添加+ 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.*")

答案 1 :(得分:0)

使用AWB自定义规则向导可以更轻松地执行此操作。从规则类型列表中,选择“表征规则”,然后选择“表征私有源”。

您的变量“凭证”将成为秘密或私人数据的来源。只需按照向导操作,它就会使用您指定的正则表达式创建规则。表达式区分大小写,它遵循Java正则表达式方言:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html