日志框架Log4j2被爆出存在远程代码执行漏洞,众多软件系统受影响
近期一个Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。该漏洞等级为严重危险级别,影响众多Java软件系统安全,需软件开发者和使用者紧急整改。
漏洞分析
Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,被广泛地应用在中间件、开发框架与Web应用中,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。
由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特别构造的数据请求包,可在目标服务器上执行任意代码。漏洞PoC已在网上公开,默认配置即可进行利用,该漏洞影响范围极广,建议相关用户尽快采取措施进行排查与防护。
燃旭软件团队已经成功复现此漏洞
参考链接:
https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues
判断应用系统是否受影响方式,用户只需排查Java应用是否引入 log4j-api , log4j-core 两个jar。若存在应用使用,极大可能会受到影响。
影响范围
Apache log4j2 在2.0至2.14.1版本均受影响。
供应链影响范围:
已知受影响应用及组件:
Apache Solr
Apache Flink
Apache Druid
srping-boot-strater-log4j2
更多组件可参考如下链接:
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
不受影响版本:
Apache log4j-2.15.0-rc1
漏洞检测
3.1 人工检测
1、相关用户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件,若存在相关Java程序包,则很可能存在该漏洞。
2、若程序使用Maven打包,查看项目的pom.xml文件中是否存在下图所示的相关字段,若版本号为小于2.15.0,则存在该漏洞。
3、若程序使用gradle打包,可查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为小于2.15.0,则存在该漏洞。
3.2 攻击排查
1、攻击者在利用前通常采用dnslog方式进行扫描、探测,常见的漏洞利用方式可通过应用系统报错日志中的"javax.naming.CommunicationException"、"javax.naming.NamingException: problem generating object using object factory"、"Error looking up JNDI resource"关键字进行排查。
2、攻击者发送的数据包中可能存在"${jndi:}" 字样,推荐使用全流量或WAF设备进行检索排查。
解决方案
目前官方已发布测试版本修复该漏洞,受影响用户可先将Apache Log4j2所有相关应用到该版本,下载链接:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1
注:由于此版本非正式发行版,可能出现不稳定的情况,建议用户在备份数据后再进行升级。
升级供应链中已知受影响的应用及组件:Apache Solr、Apache Flink、Apache Druid、srping-boot-strater-log4j2
总结
近期软件安全漏洞频频爆出,燃旭软件提醒用户及时关注使用的应用系统的安全,因为数据价值高于一切,一旦系统被攻破,前期积累的数据将毫无安全可言。燃旭软件也会一如既往的维护系统,以用户信息安全为己任,保证用户业务运转不受影响。