1 问题背景
漏洞编号 |
CNVD-2021-95914 |
漏洞名称 |
Apache Log4j任意代码执行漏洞 |
漏洞性质 |
任意代码执行 |
漏洞描述 |
12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Log4j 的广泛使用,该漏洞一旦被攻击者利用会造成严重危害。 根据“微步在线研究响应中心”消息,可能的受影响应用包括但不限于:Spring-Boot-strater-log4j2、Apache Struts2、Apache Solr、Apache Flink、Apache Druid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka 等。很多互联网企业都连夜做了应急措施。斗鱼、京东、网易、深信服和汽车产业安全应急响应中心皆发文表示,鉴于该漏洞影响范围比较大,业务自查及升级修复需要一定时间,暂不接收 Log4j2 相关的远程代码执行漏洞。 |
漏洞危害 |
Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据被日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码,可能对用户造成不可挽回的损失 |
危害等级 |
严重 |
影响版本及范围 |
2.0 <= Apache log4j2 <= 2.14.1 |
2 分析原因及复现漏洞
2.1 相关知识介绍
2.1.1 最简单的日志打印
// 通过表单接收name等字段,并且在日志中生成一条记录
public void login(string username){
String username = "test"; //表单接收name字段
logger.info("{},登录了", username); //logger为log4j
}
日志会显示
INFO test,登录了
思考:记录日志为什么会导致bug呢?