*此文于 12 月 21 日更新,详细添加了最新的 Log4j 漏洞如何影响其他 Pulsar 生态系统工具、StreamNative Cloud 和 StreamNative Platform 的详细信息。
上周末,Apache 开源项目 Log4j 2.16.0 被曝出新的漏洞,Log4j 紧急发布 2.17.0 版本。本文为大家提供最新版 Apache Pulsar 有关 Log4Shell 关键漏洞(即 log4j)的更新。以下列举了开源版本 Apache Pulsar 和 StreamNative 产品中漏洞的状态,以及需要解决安全漏洞所需采取的措施。
如果您有任何问题与疑问,请在 https://support.streamnative.io 上填充表单或发送电子邮件至 support@streamnative.io 获取 StreamNative 支持。
目前总共发现了三个影响 log4j 的 CVE。在这三个漏洞中,默认情况下只有两个影响 Apache Pulsar。Pulsar 社区一直在努力修补所有三个 CVE 造成的漏洞影响。截至目前,Pulsar 版本 2.9.1 和 2.8.2 已更新 log4j 版本并解决所有已知漏洞造成的影响。Pulsar 2.7 和 2.6 的新版本发布正在进行中。
下表总结了 log4j 漏洞的影响和解决漏洞影响的操作。
CVE | Description | Pulsar Impact | How to mitigate |
CVE-2021-44228 | 此漏洞允许外部对易受攻击的系统版本中执行远程代码执行(RCE) 攻击。该漏洞也可能导致数据/secret 泄露。Log4j 2.15.0 版本修复了此问题。 | 默认情况下,2.9.1 或 2.8.2 之前的 Pulsar 版本容易受到攻击。然而,目前(在使用 Docker 镜像或最新的 JRE 的情况下)未发现任何已知的 RCE 威胁,但数据或Secret 可能通过环境变量泄漏。 | Suggest |
CVE-2021-45046 | 如果使用某些 log4j 格式配置,此漏洞能够绕过通过 formatMsgNoLookups 实施的解决措施。这是 log4j 2.15.0 中的一个不完整的修复所造成的,添加某些额外的配置后该漏洞会导致和第一个 CVE 相同的风险。Log4j 2.16.0 版本修复了这个问题。 | 默认情况下,Pulsar 不会受到攻击;除非用户使用 “进程” 运行时配置了 Pulsar Functions 或者配置了非标准的 log4j 格式。请参阅非标准 log4j 配置的更多详细信息。 | |
CVE-2021-45105 | 当用户使用某些 log4j 格式配置时该漏洞会导致系统存在被 DoS 攻击的风险。在 log4j 2.16.0 中该漏洞依然存在。Log4j 2.17.0 版本修复了这个问题。 | 默认情况下,Pulsar 不会受到攻击,除非用户使用 “进程” 运行时配置了 Pulsar Functions 或者配置了非标准的 log4j 格式。请参阅非标准 log4j 配置的其他详细信息。 |
StreamNative 致力于为所有客户快速解决和修补这些问题。下表提供了有关当前 StreamNative 产品状态的更新及建议用户操作的详细信息。
产品 | 状态 | 建议用户操作 | 未来动向 |
StreamNative Cloud Hosted | 自 12 月 10 日起已完全解决 | 无需任何操作 | 作为定期维护工作的一部分,StreamNative 将在未来几周内将所有集群升级到带有 log4j 2.17.0 的 Pulsar 版本。不会对客户产生任何影响。
虽然 formatMsgNoLookups 解决措施足够修复漏洞,但 StreamNative 会确保所有集群都运行最新版本的 Pulsar。 |
StreamNative Cloud Managed | 自 12 月 15 日起,所有集群均已完全解决漏洞带来的影响。针对特殊情况,StreamNative 技术团队已另行直接沟通。 | 一些客户可能会收到有关使用 Java Pulsar Functions 时需要采取的额外操作的信息。具体内容请参阅下文。 | 作为定期维护工作的一部分,StreamNative 将在未来几周内将所有集群升级到带有 log4j 2.17.0 的 Pulsar 版本。不会对客户产生任何影响。
虽然 formatMsgNoLookups 解决措施足够修复漏洞,但 StreamNative 会确保所有集群都运行最新版本的 Pulsar。 |
StreamNative Platform | 我们已于 12 月 13 日联络沟通如何解决漏洞造成的影响(通过 formatMsgNoLookups 方式)。StreamNative Platform 已于 12 月 13 日针对 Pulsar 2.8 分支版本筹备了新的发布版本。 | 可以通过使用 formatMsgNoLookups 配置直接更新部署配置文件(values 文件)(参见后文的详细信息)或升级到 sn-platform 2.8.1.29 之后的版本来解决漏洞造成的影响。具体内容请参阅下文。 | 将向 helm charts 部署一个版本,所有集群将默认应用这些变更。此版本预计在未来 1-2 周内发布。 |
Support | 我们已于 12 月 13 日联络沟通如何解决漏洞造成的影响(通过 formatMsgNoLookups 方式)。 | 可以通过设置 formatMsgNoLookups 属性或将开源版本 Pulsar 更新到 2.9.1 或 2.8.2 版本(最终 RC 版本验证中)来解决。具体内容请参阅下文。 | 开源版本 Pulsar 2.7 和 2.6 分支的发布正在准备中,还需要 1-2 周的时间。在此之前,请通过使用 formatMsgNoLookups 属性来解决漏洞造成的影响。 |
如上所示,如果用户配置了 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 版本。
用 Java 编写的 Pulsar Functions 需要重新部署来获得更新的值。我们会在未来几周内直接联系 StreamNative Cloud Managed 客户来解决任何未得到解决的 functions 上的问题。该操作类似于使用 pulsar-admin functions update命令,示例请参阅 https://pulsar.apache.org/docs/en/functions-deploying/#updating-cluster-mode-functions
如果您使用的是 StreamNative Platform,则可以相应地编辑 values 文件以部署 formatMsgNoLookups
操作。我们目前不建议更新 chart 版本,因为最新版本包含一些与此次漏洞不相关的更改。
下文为需要在值文件中添加或更改的新值。
注意:这里给到的解决方案与之前的方案——向
PULSAR_EXTRA_OPTS
中添加-Dlog4j2.formatMsgNoLookups=true
操作是等效的,可任选其一。
bookkeeper:
configData:
LOG4J_FORMAT_MSG_NO_LOOKUPS: “true”
broker:
configData:
LOG4J_FORMAT_MSG_NO_LOOKUPS: “true”
proxy:
configData:
LOG4J_FORMAT_MSG_NO_LOOKUPS: “true”
streamnative_console:
configData:
LOG4J_FORMAT_MSG_NO_LOOKUPS: “true”
zookeeper:
configData:
LOG4J_FORMAT_MSG_NO_LOOKUPS: “true”
可以通过以下方式升级版本:
images:
autorecovery:
repository: streamnative/sn-platform
tag: 2.8.1.30
bookie:
repository: streamnative/sn-platform
tag: 2.8.1.30
broker:
repository: streamnative/sn-platform
tag: 2.8.1.30
functions:
repository: streamnative/sn-platform
tag: 2.8.1.30
presto:
repository: streamnative/sn-platform
tag: 2.8.1.30
proxy:
repository: streamnative/sn-platform
tag: 2.8.1.30
zookeeper:
repository: streamnative/sn-platform
tag: 2.8.1.30
streamnative_console:
repository: streamnative/sn-platform-console
tag: "1.10-rc2"
以上两种操作可以同时部署,推荐同时操作。
如果您使用的是开源版本 Pulsar,请参阅博客文章。此外,我们鼓励您尽可能升级到 2.8.2 或 2.9.1 版本。
此外,开源或 StreamNative Helm charts 的用户不需要等待 helm chart 中的镜像更新,可以指定类似于上面显示的 platform chart 的新版本。
以下我们罗列了 Pulsar 生态系统中一些工具,并针对其是否受到影响进行解答。
潜在的问题可能非常严重,远程代码执行 (RCE) 漏洞会使任意代码严重暴露系统受到攻击者造成的更多破坏,从而可能获得完整的系统访问权限。
目前未发现针对 Apache Pulsar 的已知 RCE 漏洞利用。但是,我们仍建议重视此问题,因为执行代码的机制很复杂,并且存在许多潜在的可能性。暴露环境变量或其他环境数据都有可能造成攻击。强烈建议 Apache Pulsar 社区和 StreamNative 用户立即采取措施。
发布开源 Pulsar 新版本涉及遵循社区中明确定义的流程。由于在过去一周发现了其他漏洞,社区 / Pulsar PMC(项目管理委员会)决定多次重新启动发布流程,以包含最新版本的 log4j 来解决所有未解决的问题。
目前,我们未发现有任何使用此漏洞导致secret或客户数据丢失的情况。当有人试图利用这些漏洞攻击系统时,一些云厂商会自动报告安全问题,但到目前为止未发现成功的攻击行为。对于收到警告报告的客户,我们正在为其更换凭证。