Fortify 强化360-增加';密码';别名?

Fortify 强化360-增加';密码';别名?,fortify,Fortify,我在一些非常大的项目上运行Fortify(2.6.5),但它没有标记一些关键问题,这是它真正需要的。似乎Fortify对名为“password”的变量进行了一些模式匹配,然后执行数据流分析。这很好,并有助于确保此类敏感数据不会发生隐私侵犯,例如将其写入记录器(在调试中) 这一切都很好,但我们有这样的情况:密码通过其他变量名(如“凭证”)传递到系统中,以及其他机密信息,这些信息需要在处理时以相同的严格程度进行处理,就像Fortify处理包含字符串“密码”的变量一样 是否有一些简单的方法可以添加/配

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

这一切都很好,但我们有这样的情况:密码通过其他变量名(如“凭证”)传递到系统中,以及其他机密信息,这些信息需要在处理时以相同的严格程度进行处理,就像Fortify处理包含字符串“密码”的变量一样

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

“轻松”取决于您对自定义规则的舒适程度。您完全可以使用CharacterizationRule向名为“credential”的变量添加+私有污染标志(与隐私侵犯规则关联的污染)

下面是一个小的示例片段,介绍了开始使用时需要用到的结构匹配规则:

            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.*")

使用AWB自定义规则向导有一种更简单的方法来实现这一点。从规则类型列表中,选择“角色化规则”,然后选择“私有源的角色化”


您的变量“credential”将是机密或私有数据的来源。只需按照向导操作,它就会用您指定的正则表达式创建一个规则。该表达式区分大小写,并遵循Java正则表达式方言:

谢谢!考虑到Fortify识别什么是密码和什么不是密码(无需遍历所有代码并在任何地方添加Fortify注释)的匹配似乎是多么简单,这并不是人们希望的简单解决方案,但它可以做到。我来试一试……这个功能在2.6.5版中可能不可用。它在当前版本3.40中绝对可用。