飞奔的炮台 发表于 2021-12-27 18:37:26

最新版:Apache Pulsar 针对 Log4j 漏洞解决方案


作者:Matteo Merli,StreamNative CTO,Apache Pulsar PMC 主席;Addison Higham,StreamNative 主管工程师,Apache Pulsar Committer。
   
本文译自 StreamNative 英文博客,原文链接:https://streamnative.io/blog/engineering/log4-mitigation-en/,更多详情请参考 StreamNative 公众号。
   
此文于本周二更新,详细添加了最新的 Log4j 漏洞如何影响其他 Pulsar 生态系统工具的详细信息。
上周末,Apache 开源项目 Log4j 2.16.0 被曝出新的漏洞,Log4j 紧急发布 2.17.0 版本。本文为大家提供最新版 Apache Pulsar 有关 Log4Shell 关键漏洞(即 log4j)的更新。以下列举了开源版本 Apache Pulsar 中漏洞的状态,以及需要解决安全漏洞所需采取的措施。

漏洞影响与项目状态更新
目前总共发现了三个影响 log4j 的 CVE。在这三个漏洞中,默认情况下只有两个影响 Apache Pulsar。Pulsar 社区一直在努力修补所有三个 CVE 造成的漏洞影响。截至目前,Pulsar 版本 2.9.1 和 2.8.2 已更新 log4j 版本并解决所有已知漏洞造成的影响。Pulsar 2.7 和 2.6 的新版本发布正在进行中。下表总结了 log4j 漏洞的影响和解决漏洞影响的操作。
CVE   描述   Pulsar 受到的影响   解决方案
             CVE-2021-44228   此漏洞允许外部对易受攻击的系统版本中执行远程代码执行(RCE) 攻击。该漏洞也可能导致数据/secret 泄露。Log4j 2.15.0 版本修复了此问题。   默认情况下,2.9.1 或 2.8.2 之前的 Pulsar 版本容易受到攻击。然而,目前(在使用 Docker 镜像或最新的 JRE 的情况下)未发现任何已知的 RCE 威胁,但数据或Secret 可能通过环境变量泄漏。   ·建议更新至 Pulsar 2.9.1 或 2.8.2 版本
·并且添加 formatMsgNoLookups 属性或 LOG4J_FORMAT_MSG_NO_LOOKUPS 环境变量
CVE-2021-45046   如果使用某些 log4j 格式配置,此漏洞能够绕过通过 formatMsgNoLookups 实施的解决措施。这是 log4j 2.15.0 中的一个不完整的修复所造成的,添加某些额外的配置后该漏洞会导致和第一个 CVE 相同的风险。Log4j 2.16.0 版本修复了这个问题。   默认情况下,Pulsar 不会受到攻击;除非用户使用 “进程” 运行时配置了 Pulsar Functions 或者配置了非标准的 log4j 格式。请参阅非标准 log4j 配置的更多详细信息。   ·更新至 Pulsar 2.9.1 或 2.8.2 版本
·或者禁用 Pulsar Functions 进程运行时或删除非标准日志格式
             CVE-2021-45105   当用户使用某些 log4j 格式配置时该漏洞会导致系统存在被 DoS 攻击的风险。在 log4j 2.16.0 中该漏洞依然存在。Log4j 2.17.0 版本修复了这个问题。   默认情况下,Pulsar 不会受到攻击,除非用户使用 “进程” 运行时配置了 Pulsar Functions 或者配置了非标准的 log4j 格式。请参阅非标准 log4j 配置的其他详细信息。   ·更新至 Pulsar 2.9.1 或 2.8.2 版本
·或者禁用 Pulsar Functions 进程运行时或删除非标准日志格式


解决方案
    非标准 log4j / Pulsar Functions 和进程运行时用户解决方案
如上所示,如果用户配置了 customer log4j 模板字符串或通过进程运行时(Process Runtime)使用 Pulsar Functions,即使配置了 no message lookup 解决措施,外部也可以利用 log4j 进行漏洞攻击。总而言之,如果用户已将 log4j 模板字符串配置为包含对上下文对象($${ctx:}、%x、%mdc 等)的引用,或者通过进程运行时使用 Pulsar Functions,那么你的系统可能面临风险。我们建议用户删除自定义设置,如果必须通过进程运行时使用 Pulsar Functions 的话则升级到 Pulsar 2.8.2 或 2.9.1 版本。
Pulsar Functions 用户解决方案
用 Java 编写的 Pulsar Functions 需要重新部署来获得更新的值。该操作类似于使用 pulsar-admin functions update 命令,示例请参阅 https://pulsar.apache.org/docs/en/functions-deploying/#updating-cluster-mode-functions。


Apache Pulsar 开源版本解决方案
如果您使用的是开源版本 Pulsar,请参阅博客文章。此外,我们鼓励您尽可能升级到 2.8.2 或 2.9.1 版本。此外,开源或 StreamNative Helm charts 的用户不需要等待 helm chart 中的镜像更新,可以指定新版本。
周边生态相关更新
以下我们罗列了 Pulsar 生态系统中一些工具,并针对其是否受到影响进行解答。
·Pulsar Manager - Pulsar Manager 不受 log4j 漏洞的直接影响。Pulsar Manager 是使用 spring 框架构建的,它使用 logback 进行日志记录。Logback 也受到漏洞的影响,但与 log4j 漏洞不同的是,它需要权限直接编辑 logback 配置文件,这大大降低了问题的严重性。我们将在 spring 发布修复版本后发布 Pulsar Manager 新版本。
·Pulsar Spark/Flink Connector - Pulsar 的 Apache Flink 和 Apache Spark Connector 都不会直接受到影响。两个 Connector 都不直接包含 log4j,而是基于你所用的 Flink 或 Spark 发布版本中绑定的 log4j。升级 Flink 或 Spark 将解决这个问题。
·Pulsar IO Connector - Pulsar IO 中的 Connector(默认情况下)本身不包含 log4j,而是依赖于 Pulsar IO 框架提供的 log4j。按照上文说明并重新部署 Connector 将解决漏洞问题。本建议适用于 Pulsar 中包含的所有 Connector 以及 StreamNative 开源并支持的Connector。自己定制开发的 Connector 可能需要独立验证。
其他有关 log4j 安全漏洞的 FAQ

1. 本次安全漏洞的严重程度。
潜在的问题可能非常严重,远程代码执行 (RCE) 漏洞会使任意代码严重暴露系统受到攻击者造成的更多破坏,从而可能获得完整的系统访问权限。目前未发现针对 Apache Pulsar 的已知 RCE 漏洞利用。但是,我们仍建议重视此问题,因为执行代码的机制很复杂,并且存在许多潜在的可能性。暴露环境变量或其他环境数据都有可能造成攻击。Apache Pulsar 社区 强烈建议用户立即采取措施。

2. 开源版本的发布为何需要较长时间?
发布开源 Pulsar 新版本涉及遵循社区中明确定义的流程。由于在过去一周发现了其他漏洞,社区 / Pulsar PMC(项目管理委员会)决定多次重新启动发布流程,以包含最新版本的 log4j 来解决所有未解决的问题。


其他有关 log4j 安全漏洞的 FAQ
Apache Pulsar 针对 Log4j2 漏洞 (CVE-2021-44228) 的解决方案

    引用链接

CVE-2021-44228: https://nvd.nist.gov/vuln/detail/CVE-2021-44228
CVE-2021-45046: https://nvd.nist.gov/vuln/detail/CVE-2021-45046
CVE-2021-45105: https://nvd.nist.gov/vuln/detail/CVE-2021-45105
▼ 关注「Apache Pulsar」,获取干货与动态 ▼
      
页: [1]
查看完整版本: 最新版:Apache Pulsar 针对 Log4j 漏洞解决方案