背??景前段时间,Log4j2、Logback日志框架频频爆:爆了!Log4j2再次泄露,发布v2.17.1。..Logback也炸了,炸了。..很大一部分原因是因为JNDI。..JNDIJNDI:JavaNamingandDirectoryInterface,即:Java命名和目录接口,为Java应用程序提供命名和目录功能。JNDI架构图:如图所示,JNDI包括以下两部分:1)JNDIAPI:Java应用程序通过JNDIAPI访问各种命名和目录服务。2)JNDISPI(ServiceProviderInterface)Java应用程序通过JNDISPI插入各种命名和目录服务,然后通过JNDIAPI访问它们。例如,在使用JNDI之前,您可能必须在Java代码中硬编码一些JDBC数据库配置。使用JNDI,您可以将资源定义为数据源,然后按名称进行搜索。示例代码如下:Connectionconn=null;尝试{上下文ctx=newInitialContext();数据源ds=(数据源)ctx.lookup("java:MysqlDataSource");conn=ds.getConnection();...}catch(Exceptione){...}finally{...}当然,现在数据源和配置都由Spring管理,这里只是JNDI的一种用法。说白了,JNDI就是一套Java规范,相当于注册了某个资源,然后根据资源名查找定位资源。要使用JNDI,必须有一个JDNI类,以及一个或多个服务提供者(SPI),例如JDK中包含以下服务提供者:轻量级目录访问协议(LDAP)通用对象请求代理架构(CORBA)Common对象服务命名服务(COS)Java远程方法调用(RMI)域名服务(DNS)这里的LDAP协议是漏洞频发的根源,攻击者屡试不爽。Log4j2漏洞回顾了Internet上许多重复出现的示例。为了不造成更大的影响,这里就不做实际演示了。示例代码如下:/***作者:StackLeader*来源公众号:Java技术栈*/publicclassTest{publicstaticfinalLoggerlogger=LogManager.getLogger();publicstaticvoidmain(String[]args){logger.info("${jndi:ldap://localhost:8080/dangerous}");}}这就是Log4j2核弹级漏洞的主要原因!上面提到了LDAP协议。它是JDKJNDI下的开放应用协议和服务提供者,用于提供目录信息访问控制。该漏洞是在JDNI中使用了ldap协议。如果上述代码中的localhost是攻击者的地址,就会造成远程代码执行漏洞,后果不堪设想。.这是因为Log4j2有一个Lookups功能,它提供了一种给Log4j配置加值的方式,即通过一些方法和协议来读取特定环境下的信息。JndiLookup就是其中之一:经过一系列的Version修复和调整,从Log4jv2.17.0开始,需要通过以下参数主动开启JNDI操作:log4j2.enableJndiLookup=true现在这种jndi:ldap协议查找方式同样被Log4j2Lookups杀死,只支持java协议或者不支持协议的方式来查找。Log4j2漏洞的后续进展,栈长会持续跟进,关注公众号Java技术栈,公众号会第一时间推送。结论Log4j2Lookups造成的漏洞很多。它已经爆炸了一段时间。这真是一个鸡肋的功能。有多少人用过?当然,这几天的漏洞也不全是JNDI造成的。JNDI只是提供了一套规范。用不好,也不能怪罪吧?因此,我们不能把所有的责任都推给JNDI。Log4j2Lookups功能离不开。既然提供了JndiLookup功能,就太少考虑其影响了。.一个日志框架,主要用途是记录日志。虽然它提供了很多其他丰富的功能,但是如果考虑不到位,将会造成严重的后果。毕竟安全是第一位的,但是没办法,用开源利弊就得接受开源。还有人说,自己开发可能太离谱了。使用主流开源的公司很多,有泄密的时候也有大厂反馈。他们可以在第一时间感知它们并自行开发。产品和持续维护是另一回事。参考文档:https://docs.oracle.com/javas...https://logging.apache.org/lo...Log4j2漏洞的后续进展,栈长会持续跟进,关注公众号Java技术栈,公众号会第一时间推送。版权声明!!!本文由公众号《Java技术栈》原创。转载、引用本文内容请注明出处。抄袭、洗稿均属侵权投诉,后果自负,并保留追究法律责任的权利。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4、SpringBoot2.6正式发布,一大波新特性。.5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
