Java 原木锻造加固装置

Java 原木锻造加固装置,java,security,logging,fortify,log-forging,Java,Security,Logging,Fortify,Log Forging,我正在使用Fortify SCA查找应用程序中的安全问题(作为大学作业)。我遇到了一些我无法摆脱的“原木锻造”问题 基本上,我会记录一些值,这些值是用户从web界面输入的: logger.warn("current id not valid - " + bean.getRecordId())); 并且Fortify将此报告为日志伪造问题,因为getRecordId()返回用户输入 我遵循了这一点,并用空格替换了“新行”,但问题仍在报道中 logger.warn("current id not

我正在使用Fortify SCA查找应用程序中的安全问题(作为大学作业)。我遇到了一些我无法摆脱的“原木锻造”问题

基本上,我会记录一些值,这些值是用户从web界面输入的:

logger.warn("current id not valid - " + bean.getRecordId()));
并且Fortify将此报告为日志伪造问题,因为getRecordId()返回用户输入

我遵循了这一点,并用空格替换了“新行”,但问题仍在报道中

logger.warn("current id not valid - " + Util.replaceNewLine(bean.getRecordId()));

有人能提出解决此问题的方法吗?

您需要在Fortify中将您的replaceNewLine标记为sanitiser(如果我没记错的话),它将停止报告此问题。

Alina,我实际上是您用来解决日志注入问题的文章的作者。希望能有所帮助

维塔利在强化方面是正确的。您需要构建Fortify所称的“自定义规则”

它可能是一个数据流清理规则。可以在此处找到一个基本示例:。如果您拥有Fortify,您的产品文档中应该有一个自定义规则编写指南


我不知道你会用什么污点标志,但它看起来有点像“原木锻造”。实际上,只要数据通过实用程序方法传递,您就可以编写一条规则来删除日志伪造“污点”。强化将假设通过那里传递的任何数据现在都可以安全地写入日志,并且不会导致日志伪造

我知道这已经得到了回答,但我想举个例子就好了:)


D82118B1-BBAE-4047-9066-5FC821E16456
SKU验证原木锻造
1
DDAB5D73-8CF6-45E0-888C-EEEFBEFF2CD5
+经验证的原木锻造
利用率
换行
返回

您实际上可以从特定方法创建新规则

完成扫描后,导航到audit workbench右侧的函数。 找到你的消毒方法,右键点击

您可以从中生成规则。您需要的是一个通用的DataflowCleanseRule

我只是根据上面有人发布的xml做的。可以将规则另存为.xml文件。
更新扫描时,您可以传递-rule参数并指向.xml文件。

IMHO这一切都是关于内容的,:)作为一种良好的做法,您必须清理用户输入,这应该被视为一种警告,在某些情况下,如异构软件体系结构(从JAVA调用C app)未初始化的用户输入可能是危险的(替换新行远远不是正确的清理;)),格式攻击也会带来威胁,如果记录ID是数字(长、整数、双精度),则可以跳过它:),如果是字符串,则也可以跳过它,但请记住:)。有关此选项的更多详细信息,以将该方法标记为“清理器”?我正在使用Fortify Audit Workbench,但我找不到该选项。我发现有一个叫做“Fortify Java Annotations”的东西,我希望我能找到更多关于这个的信息。很抱歉,我已经有一段时间没有接触过这个东西了。与Fortify support交谈是您最好的选择-这是一款昂贵的产品,上次我使用它时,支持还可以。谢谢John!根据您的建议和文档,我成功地编写了我需要的自定义规则。您的文章也非常有用。此链接不再存在: