2012-02-24 35 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