【问题标题】:Fortify SCA scan reports Log Forging issue while reading environment variablesFortify SCA 扫描在读取环境变量时报告日志伪造问题
【发布时间】:2019-04-26 06:27:23
【问题描述】:

我使用了System.getenv("envVariableName"),它给我带来了 Log Forging 问题。 我什至尝试使用 ESAPI 编码器对返回的字符串进行编码,但没有帮助。

我的代码sn-p:

String envValue = encode(System.getenv("envVariableName"));

String encode(String message) {
        if (message != null) {
            String clean = message.replace('\n', '_').replace('\r', '_');
            if (ESAPI.securityConfiguration().getLogEncodingRequired()) {
                clean = ESAPI.encoder().encodeForHTML(message);
                if (!message.equals(clean)) {
                    clean += " (Encoded)";
                }
            }
            return clean;
        }
        return message;
    }

任何关于我所缺少的东西的建议将不胜感激。

【问题讨论】:

    标签: logging environment-variables fortify esapi log-forging


    【解决方案1】:

    Fortify(至少曾经使用过)将 ESAPI 的编码器识别为删除“网络”污点标志,但我认为这只是在 Fortify 的 XSS 规则的上下文中。我不认为他们在 Log Forging 的上下文中做到了这一点,尽管我很确定他们承认 ESAPI 的日志记录提供“安全日志记录”。

    如果我在这里理解您的愿望,您不只是希望将此特定实例标记为“不是问题”并禁止它,而是希望它首先不将此模式识别为 Log Forging 实例.不幸的是,您不能真正修改 HP(现在的 Microfocus)Fortify 规则。 (他们的规则包甚至是加密的,所以没有在调试器下运行 AWB,您甚至无法查看他们的规则。)如果您确定“环境变量”是“受信任的”,我想您可以设置并应用 AWB过滤器集将忽略接收器上唯一污点标志是“环境变量”的实例。 (或者仅将其应用于此 Log Forging 类别。)

    但总的来说,您要么必须忍受噪音(Fortify 会产生大量误报),要么必须手动审查每个实例并将误报抑制为“不是问题” ”。这是通常的工作方式,尽管有时该功能仅限于 AppSec 专家。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      Fortify 指定的行真的在 String envValue = encode(System.getenv("envVariableName"));?

      当您将一些信息从不受信任的来源写入日志时,通常会发生日志伪造问题:https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.log_forging#C%23%2FVB.NET%2FASP.NET

      【讨论】:

      • 是的,因为即使数据从不受信任的来源进入应用程序,Fortify 也会报告日志伪造问题;在这种情况下,从环境变量中读取的值。无论如何,我也面临这个日志问题。如果您对此有解决方案,它仍然会有所帮助。
      • 如果你真的相信这个来源,你可以把它标记为误报。但是,检查这个线程:stackoverflow.com/questions/30537359/…
      【解决方案3】:

      问题:如果您已经在使用 ESAPI,那么为什么不直接使用 ESAPI 的日志记录,因为它提供“安全日志记录”来防止 Log Forging 攻击?

      【讨论】:

      • 我不能使用 EASPI 日志记录是基于需求的。正如我所提到的,我正在寻找一种解决方案,让 Fortify 可以将输入数据视为受信任的数据。你对此有什么建议吗?
      • 下面作为新答案回答,因为我的回复太长了。
      猜你喜欢
      • 2015-03-06
      • 2015-04-14
      • 2019-04-10
      • 2022-11-25
      • 2014-09-27
      • 2020-11-28
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多