近日,根据我公司安全部门监测,Apache Log4j2是一个基于Java的日志记录工具。
该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。
此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。为避免您的业务数据受到影响,我们建议您及时进行自查,如在受影响范围,请您及时进行更新修复,避免被外部攻击者入侵。
据了解,此次漏洞是由 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在处理数据时,并未对输入(如${jndi)进行严格的判断,从而造成注入类代码执行。
漏洞影响范围:
Java类产品:Apache Log4j 2.x < 2.16.0
受影响的应用及组件(包括但不限于)如下:
Apache Solr、Apache Flink、Apache Druid、Apache Struts2、srping-boot-strater-log4j2等。
更多组件可参考如下链接:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
风险等级:高
漏洞风险:攻击者可利用该漏洞进行远程执行任意代码
修复措施:升级至已修复该漏洞的软件版本
其他紧急补救措施:
(1)设置jvm参数 -Dlog4j2.formatMsgNoLookups=true 仅限Log4j 2.10.0以上版本。
(2)设置log4j2.formatMsgNoLookups=True 仅限Log4j 2.10.0以上版本。
(3)设置系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 为 true 仅限Log4j 2.10.0以上版本。
(4)采用 rasp 对lookup的调用进行阻断。
(5)采用waf对请求流量中的${jndi}进行拦截。
(6)禁止不必要的业务访问外网。
2022-01-03