12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Log4j 的广泛使用,该漏洞一旦被攻击者利用会造成严重危害。
据悉,Apache Log4j 2.x <= 2.14.1 版本均回会受到影响。根据“微步在线研究响应中心”消息,可能的受影响应用包括但不限于:Spring-Boot-strater-log4j2、Apache Struts2、Apache Solr、Apache Flink、Apache Druid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka 等。很多互联网企业都连夜做了应急措施。
lookup 功能造成的漏洞
Log4j 是一款开源 Java 日志记录工具。日志记录主要用来监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。因此,对于程序员来说,日志记录非常重要。
在强调可重用组件开发的今天,Apache 提供的强有力的日志操作包 Log4j。Log4j 可以轻松控制 log 信息是否显示、log 信息的输出端类型、输出方式、输出格式,更加细致地控制日志的生成过程,而其通过配置文件可以灵活地进行配置而不需要大量的更改代码。因此,很多互联网企业都选择使用 Log4j 。
Log4j2 也支持 SLF4J,可以自动重新加载日志配置,并支持高级过滤选项。此外它还允许基于 lambda 表达式对日志语句进行延迟评估,为低延迟系统提供异步记录器,并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。通过其他语言接口,企业也可以在 C、C++、.Net、PL/SQL 程序中使用 Log4j。!
此次漏洞的出现,正是由用于 Log4j 2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。做了漏洞复现:
简单来说,就是在打印日志时,如果发现日志内容中包含关键词 ${,那么这个里面包含的内容会当做变量来进行替换,导致攻击者可以任意执行命令。详细漏洞披露可查看:https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues
由于线上 web 业务的任何数据都可能写入 Log4j,甚至一些 pre-auth 的地方,比如注册、登录,实际攻击入口取决于业务具体情况。目前百度搜索、苹果 iCloud 搜索、360 搜索等都出现了该问题。
史诗级Log4j漏洞已引起大规模入侵,目前腾讯T-Sec Web应用防火墙(WAF)、腾讯T-Sec高级威胁检测系统(NDR、御界)、腾讯T-Sec云防火墙已支持检测拦截利用Apache Log4j2远程代码执行漏洞的攻击活动。
腾讯T-Sec主机安全(云镜)、腾讯容器安全服务(TCSS)已支持检测企业资产(主机、容器及镜像)是否存在Apache Log4j2远程代码执行漏洞。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/211930.html