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

感知log4j中LDAP查找功能的背后

尹承业
2023-03-14

最近披露了一个0天漏洞,该漏洞使用log4j中的一个安全漏洞,允许未经授权的远程代码执行。

我想知道,什么是真正的原因,为什么log4j实现了这个JNDI查找,这导致了这个漏洞?

在log4j中使用此LDAP查找功能的示例是什么?

共有1个答案

郭博涉
2023-03-14

Log4j是Java中使用的一个流行日志框架(您可以通过查看该漏洞的广泛影响来判断流行程度)。Log4j提供了一个特定的特性,您可以在其中向日志字符串添加标记,这些标记将被插值以获取特定数据。例如,“%d{dd MMM yyyy}”将插入记录消息的日期。

同时,JNDI(Java命名和目录接口)通常用于向多个(mirco)服务共享配置设置。

您可以想象有人希望在错误情况下记录配置设置的情况。

看到这篇文章解释一下

基于Java的应用程序可以一起使用JNDI LDAP来查找包含可能需要的数据的业务对象。例如,下面的URLldap://localhost:3xx/o=BusinessObjectID从运行在3xx端口上的同一台机器(本地主机)或托管在受控环境中的远程机器上的LDAP服务器远程查找和调用BusinessObject,然后从中读取属性。

它提到的更新提到它为“LOG4J2-313:addjndilookup插件”动机可以在apachejira条目中找到

目前,查找插件[1]不支持JNDI资源。在配置中支持JNDI资源查找将非常方便。

JNDI查找插件的一个用例如下:我想使用RoutingAppender[2]将来自同一web应用程序上下文的所有日志放在一个日志文件中(每个web应用程序上下文一个日志文件)。我想使用JNDI资源查找来确定目标路由(类似于logback[3]的JNDI上下文选择器)。

通过JNDI查找确定目标路由可能是有利的,因为我们不必添加任何代码来设置线程上下文的属性,JNDI查找即使在单独的线程中也应该始终工作,而无需复制线程上下文变量。

[1] http://logging.apache.org/log4j/2.x/manual/lookups.html [2] http://logging.apache.org/log4j/2.x/manual/appenders.html#RoutingAppender [3] http://logback.qos.ch/manual/contextSelector.html

log4j的最大问题是,默认情况下,所有模块的所有字符串插值都处于启用状态。与此同时,它已成为选择退出,但并非总是如此。

 类似资料:
  • 嗨,我正在尝试从一群执行者那里登录到一个Kafka主题,他们使用ApacheSpark和Log4J以及KafkaAppender。我可以使用基本的文件附加器与执行者登录,但不能登录到Kafka。 这是我的log4j.properties我为此定制的: 这是我的代码(到目前为止)。我试图传递一个记录器定义,以便每个执行者都能得到一个副本,但我不知道为什么它不会传到Kafka: 下面是日志文件的一些示

  • 1. 光线传感器(板载)光线强度 报告指定光线传感器检测到的光线强度。 示例: 按下空格键,板载光线传感器检测到的光线强度会显示在 mBot 的外接表情面板。 2. 超声波传感器(接口3)距离 cm 报告指定超声波传感器检测到的障碍物距离(cm)。 示例: 按下空格键,接口3连接的超声波传感器检测到的障碍物距离会显示在 mBot 的外接表情面板。 3. 巡线传感器(接口2)读数 报告指定巡线传感器

  • 该部分 API 将帮助您使用光环上的各类传感器的状态值,包含按钮、麦克风、加速度计、陀螺仪以及四个触摸点。 省略代码中的halocode 注意:该部分 API 省略了“halocode.”,本篇提及的所有 API 均省略了“halocode.” ,如 led_driver.off( )实际为halocode.led_driver.off()。mBuild 电子模块平台的所有功能均维护在haloco

  • 本文向大家介绍java实现查找替换功能,包括了java实现查找替换功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现查找替换功能的具体代码,供大家参考,具体内容如下 查找 查找下一处 替换 替换下一处 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我正在开发一个通过Commons使用Log4J的项目。 我正在尝试找到日志文件的路径,但是没有找到合适的方法来从Logger返回日志文件的路径。 有人尝试过吗? 问题答案: 您必须 从根记录器 获取所有附加程序,然后获取日志文件的名称。

  • 我刚刚下载了VisualStudio代码,我的Intellisense没有自动工作。 控制这一点的两个设置似乎设置正确: 当我开始输入并按下“CTRL空间”时,我确实会得到一个智能感知菜单,但这给了我一个所有东西的列表,而不是专门针对我的对象的东西。 我做错了什么?