日志锻造强化修复

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

基本上,我记录了一些来自Web界面的用户输入值:

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

并且Fortify将此报告为日志伪造问题,因为getRecordId()返回用户输入。

我已经关注了这篇文章 ,我正在用空格替换“新行”,但问题依然存在

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

任何人都可以提出解决此问题的方法吗?

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

关于Fortify,Vitaly是正确的。 您需要构建Fortify所谓的“自定义规则”。

它可能是数据流清理规则。 一个基本的例子可以在这里找到: http : //www.cigital.com/newsletter/2009-11-tips.php 。 如果您拥有Fortify,则应在产品文档中提供自定义规则编写指南。

我不知道你将使用什么污点旗帜,但它看起来像“-LOG_FORGING”。 当数据通过您的实用程序方法传递时,您实际上会写一条规则来删除伪造“污点”的日志。 Fortify会假设通过那里传递的任何数据现在都可以安全地写入日志,并且不会导致日志伪造。

我知道这已经回答了,但我认为一个例子会很好:)

   D82118B1-BBAE-4047-9066-5FC821E16456 SKU-Validated-Log-Forging  1.0     DDAB5D73-8CF6-45E0-888C-EEEFBEFF2CD5 +VALIDATED_LOG_FORGING      Util   replaceNewLine    return     

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