【问题标题】:Security flaws in code with veracode tool使用 veracode 工具的代码中的安全漏洞
【发布时间】:2011-10-13 09:47:19
【问题描述】:

我在 veracode 工具中运行了我的安全合规应用程序。 每当该工具发现任何日志记录时,它都会检测为代码中的缺陷
并且缺陷在下面的引用中说

日志输出中和不当

说明

函数调用可能导致日志伪造攻击。将未经处理的用户提供的数据写入日志文件允许 攻击者伪造日志条目或将恶意内容注入日志文件。损坏的日志文件可用于覆盖 攻击者的踪迹或作为攻击日志查看或处理实用程序的传递机制。例如,如果一个网络 管理员使用基于浏览器的实用程序查看日志,可能会发生跨站点脚本攻击。**

在我的日志中,我确实打印了来自其他界面的 xml,但没有与应用程序关联的 GUI,所以我该如何消除这个缺陷。

如果这不是提出这个问题的正确论坛,请告诉我。 谢谢

【问题讨论】:

    标签: java security web-applications veracode


    【解决方案1】:

    因此,将不受信任的数据转储到日志文件中存在两个主要问题。

    首先,记录拆分(类似于 HTTP 标头拆分)。不受信任的输入会插入一个换行符(或类似的,取决于日志文件的格式),然后是完全伪造的条目。

    其次,如果您使用 Web 浏览器查看日志,其中包含刚刚转储的日志文本,那么您很容易受到 XSS 攻击。例如,这已被用于调查脚本小子正在使用哪些浏览器(Opera 非常流行)。

    因此,将日志视为容易受到注入攻击的其他格式(HTML、XML、SQL、HTTP 标头等)。您需要确保添加可能字符的白名单。您可以编写方法来执行此操作并在每次日志调用之前清理输入。更好的是编写一个记录器,它为任何输入输出安全文本(即使它有特殊字符、控制字符、非法代理对等)。

    【讨论】:

      【解决方案2】:

      问题似乎是未经处理用户提供的数据。您应该清理传入的数据,以通过替换重要字符、& -> & 等来防止 SQL 注入或脚本攻击等。

      您还应该清楚地表明日志条目包含外部数据,并且可能是损坏或误导性数据。也许像

      这样简单
      String logText = "User " + userID + "supplied: >>" + userData + "<<";
      

      这样就可以清楚地知道什么是你的,什么是来自外部用户的。

      【讨论】:

      • 是否有任何 API 可用于清理此类数据?
      • 看看this answer
      • 那么如果userData 是“blah>blah`呢?
      • 我可能会将 替换为适当的等价物。只要它使用户输入无法执行。
      【解决方案3】:

      这都是很好的指导。在 Veracode 平台的 Triage Flaws 视图中,还有来自 OWASP 和其他来源的缺陷特定信息的直接链接。

      【讨论】:

        【解决方案4】:

        我们应该验证来自用户的数据,因为用户/攻击者输入的数据可能包含垃圾字符。

        解决方案: 只需将用户输入的数据传递给下面的库。 HtmlUtils.htmlEscape(输入)

        【讨论】:

        • 点评来源: 嗨,这篇文章似乎没有为问题提供quality answer。请编辑您的答案并改进它,或者将其作为对问题/其他答案的评论发布。
        猜你喜欢
        • 2018-10-18
        • 1970-01-01
        • 2020-09-27
        • 2020-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-05
        相关资源
        最近更新 更多