logging - 强化日志锻造问题

标签 logging fortify log-forging

我们正在使用 Fortify 扫描我们的 .NET 应用程序,需要提供一些信息来说明为什么 Log Forging 问题不适用于我们。在我们的代码中,我们有以下模式,当然它不完全是这样,我已经捕获了我们正在做的事情的本质:

public static void Write(object message, 
            ICollection<string> categories, int priority, 
            int eventId, TraceEventType severity, string title, 
            IDictionary<string, object> properties)
{

        LogEntry log = new LogEntry();
        string MessageToAdd = message.ToString();

        if (message.ToString().Length > MaxLength)
            log.Message = message.ToString().Substring(0, MaxLength);
        else
            log.Message = message.ToString();

        log.Categories = categories;
        log.Priority = priority;
        log.EventId = eventId;
        log.Severity = severity;
        log.Title = title;
        log.ExtendedProperties = properties;
        Logwriter Logger;
        Logger.Write(log);
}

所以基本上,我们控制如何创建日志条目对象。我们将消息或用户输入限制为 100 个字符。因此我们认为 Fortify 提出的 Log Forging 是误报。

大家怎么看?

最佳答案

您的代码创建的任何消息都是安全的,但 Fortify 会标记此消息,因为用户输入会被记录在那里。如果您允许用户数据进入日志,您需要做的不仅仅是限制输入的大小。至少要确保数据中没有回车符或换行符,这样它们就无法伪造日志消息。如果可以在浏览器中查看日志,您还需要对消息进行 HTML 编码。检查此文件:

https://owasp-esapi-dotnet.googlecode.com/svn/trunk/Esapi/Logger.cs

用于 .NET 的 OWASP ESAPI 已经过时了,但是这个记录器可以向您展示一种在将数据放入日志之前查找上述用例的好方法。

关于logging - 强化日志锻造问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053104/

相关文章:

StreamHandler 上的 Python setLevel 不起作用

Java 小程序日志记录

java - 强化扫描仪输出

java - 原木锻造强化修复

java - fortify 报告中的日志伪造问题

java - 使用 logback 预防日志伪造

linux - 是否可以在守护进程不关闭文件的情况下修剪守护进程打开的日志文件?

java - spring boot logback-spring.xml maxFileSize 不适用于 SizeAndTimeBasedRollingPolicy

firefox - F5 负载平衡器和 Fortigate 200d 防火墙之间的 TLSv1.2 问题 - SSL 错误 Bad MAC Read

java - 侵犯隐私漏洞问题