12

我正在使用 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()));

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

4

4 回答 4

9

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

<?xml version="1.0" encoding="UTF-8"?>
<RulePack xmlns="xmlns://www.fortifysoftware.com/schema/rules">
  <RulePackID>D82118B1-BBAE-4047-9066-5FC821E16456</RulePackID>
  <SKU>SKU-Validated-Log-Forging</SKU>
  <Name><![CDATA[Validated-Log-Forging]]></Name>
  <Version>1.0</Version>
  <Description><![CDATA[Validated-Log-Forging]]></Description>
  <Rules version="3.14">
    <RuleDefinitions>
      <DataflowCleanseRule formatVersion="3.14" language="java">
        <RuleID>DDAB5D73-8CF6-45E0-888C-EEEFBEFF2CD5</RuleID>
        <TaintFlags>+VALIDATED_LOG_FORGING</TaintFlags>
        <FunctionIdentifier>
          <NamespaceName>
            <Pattern/>
          </NamespaceName>
          <ClassName>
            <Pattern>Util</Pattern>
          </ClassName>
          <FunctionName>
            <Pattern>replaceNewLine</Pattern>
          </FunctionName>
          <ApplyTo implements="true" overrides="true" extends="true"/>
        </FunctionIdentifier>
        <OutArguments>return</OutArguments>
      </DataflowCleanseRule>
    </RuleDefinitions>
  </Rules>
</RulePack>
于 2012-11-30T17:39:27.740 回答
8

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

Vitaly 在 Fortify 方面是正确的。您需要构建 Fortify 所谓的“自定义规则”。

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

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

于 2012-10-12T05:57:44.960 回答
3

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

于 2012-10-09T07:42:24.270 回答
0

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

完成扫描后,导航到审计工作台右侧的功能。找到您的消毒方法并右键单击它。

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

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

于 2021-05-12T18:55:05.123 回答