当前位置: 首页 > 知识库问答 >
问题:

Log4j2安全热点问题

封烨伟
2023-03-14

这是配置log4j2的代码。xml文件。问题是sonar在setConfiguration上显示了安全热点问题。如何避免?

String propFile = "log4j2.xml";

LoggerContext logcontext = (org.apache.logging.log4j.core.LoggerContext) 
LogManager.getContext(false);
File logFile = new File(propFile);

logcontext.setConfigLocation(logFile.toURI());

共有2个答案

居晗日
2023-03-14

首先,请阅读Stephen C的答案,因为它提供了关于什么是安全热点的文档化解释。

第二,这是从留档声纳提供的关于具体SH特别是:

问问自己是否

  • 未经授权的用户可能有权访问日志,因为它们存储在不安全的位置,或者因为应用程序允许访问它们。日志包含正式服上的敏感信息。这可能发生在记录器处于调试模式时。
  • 日志可以无限制地增长。当用户每次执行操作时将附加信息写入日志并且用户可以根据需要执行操作多次时,就会发生这种情况。
  • 日志没有包含足够的信息来理解攻击者可能造成的损害。记录器模式(info、警告、错误)可能会过滤掉重要信息。它们可能不会打印上下文信息,如事件的确切时间或服务器主机名。
  • 日志仅存储在本地,而不是备份或复制。

如果你对这些问题中的任何一个回答是,都有风险。

推荐的安全编码实践

  • 检查您的生产部署是否没有将其记录器置于“调试”模式,因为它可能会在日志中写入敏感信息。生产日志应存储在只有系统管理员才能访问的安全位置
  • 配置记录器以显示所有警告、信息和错误消息。写入相关信息,例如事件的精确时间和主机名
  • 选择易于自动解析和处理的日志格式。在发生攻击时,快速处理日志非常重要,以便了解并限制影响
  • 检查日志文件的权限是否正确。如果在其他服务中索引日志,请确保传输和服务也安全
  • 增加日志大小的限制,确保没有用户可以用日志填充磁盘。即使用户不控制记录的信息,也可能发生这种情况。攻击者可以多次重复记录的操作

请记住,正确配置记录器并不能使其防弹。以下是关于如何使用日志的建议列表:

  • 不要记录任何敏感信息。这显然包括密码和信用卡号,但也包括任何个人信息,如用户名、位置等...通常任何受法律保护的信息都很适合删除。
  • 在将所有用户输入写入日志之前对其进行清理。这包括检查其大小、内容、编码、语法等...至于任何用户输入,请尽可能使用白名单进行验证。使用户能够在日志中写入他们想要的内容可能会产生许多影响。例如,它可能会占用您所有的存储空间或危及您的日志索引服务。
  • 记录足够的信息来监控可疑活动并评估攻击者可能对您的系统产生的影响。注册事件,例如登录失败、成功登录、服务器端输入验证失败、访问拒绝和任何重要事务。
  • 监控任何可疑活动的日志。

换句话说,您需要验证您的实现是否涵盖了这些建议,或者您是否需要担心其中的任何一个。如果没有什么可担心的,您可以将其设置为“已审核”。不过,我建议你以外的人也检查一下。可能是负责日志写入服务器的人。

“摆脱”这个热点问题的唯一方法是不使用日志或手动检查一切是否正常。当然,如果需要记录器,您应该使用后者。

裴育
2023-03-14

声纳显示安全热点问题。

这不是问题。Sonar建议您需要查看该部分代码以查找可能的安全问题。

这是SonarQube文档中关于安全热点的内容:

安全热点突出显示了开发人员需要审查的安全敏感代码。检查后,您会发现没有威胁,或者需要应用修复程序来保护代码。

查看热点的另一种方式可能是深度防御的概念,其中在应用程序中放置了多个冗余保护层,以便在发生攻击时变得更具弹性。

热点和漏洞之间的主要区别在于,在决定是否应用修复之前需要进行审查:

  • 通过热点,突出显示了一段安全敏感的代码,但整体应用程序安全可能不会受到影响。由开发人员审查代码,以确定是否需要修复来保护代码

热点的一个例子是RSPEC-2092,其中建议使用cookie安全标志来防止通过非HTTPS连接发送cookie,但需要进行审查,因为:

  • HTTPS是针对MITM攻击的主要保护,因此安全标志只是在网络安全出现某些故障时的额外保护。
  • cookie可能被设计为发送到任何地方(包括非HTTPS网站),因为它是跟踪cookie或类似的。

对于热点,我们试图给用户一些自由,并教育他们如何根据环境(预算、威胁等)选择最相关/最合适的保护。

在这种情况下,热点消息说:

“确保此记录器的配置是安全的。配置记录器是安全敏感的。”java:S4792

它在说。。。确保从安全的地方加载记录器配置;e、 g.受保护的地方,以便“坏行动者”(黑客、未经授权的用户等)无法读取(或更糟)更改日志配置。

如果您没有很好的理由以编程方式配置Log4j2,请不要这样做。改用Log4j2自动配置机制

 类似资料:
  • 2.10 热点访问 2.10.1 描述 通过调用该接口查询频道在指定时间段内的热点访问统计。 2.10.2 请求地址 地址: https://api.bokecs.com/channel/topurl?domain={domain}&begin={begin}&end={end} 2.10.3 请求方式 GET 2.10.4 请求参数 1) 请求入参 domain 域名 - | :-:| begi

  • 我有一个环境。ts文件如下所示: SonarQube是这一行的givng安全热点:,我不确定问题/解决方案是什么。我需要一些帮助。 谢谢

  • 我在我的项目中使用SonarQube,并且我有“^.\json[;]”的安全热点?\新加坡元: Hier是SonarQube发出的信息, 使用正则表达式是安全敏感的。它在过去导致了以下漏洞: CVE-2017-16021 CVE-2018-13863 根据输入字符串计算正则表达式可能是一项CPU非常密集的任务。巧尽心思构建的正则表达式(如(a)s)将需要几秒钟来计算输入字符串aaaaaaaaaaa

  • 控制权限是安全敏感的。它在过去导致了以下漏洞: 建议是这样的。安全原则演示{类我的身份:敏感的,自定义的IId实体实现应该被审查{//...} }

  • 异步Javascript和XML(AJAX)是用于开发Web应用程序以提供丰富用户体验的最新技术之一。由于它是一项新技术,因此尚未完成许多安全问题,以下是AJAX中的少数安全问题。 攻击面更多,因为需要保护更多输入。 它还公开了应用程序的内部功能。 无法保护身份验证信息和会话。 客户端和服务器端之间存在非常狭窄的界限,因此存在安全性错误的可能性。  示例 以下是AJAX安全性的示例 - 2006年

  • 在我前面的问题中:确保javascript游戏计时 ... 很明显,Javascript/Canvas游戏中的客户端计时是不安全的。我知道关于不信任客户的咒语——这就是导致我首先挣扎的原因。:-) 所以,如果我真的把所有的时间都转移到服务器上并处理它,这是一个后续问题。游戏显然需要在提交之前完成。由于游戏谜题都是Javascript,这就引入了操纵客户端代码来伪造游戏完成的问题。 我已经在一个单独