Solr 安全新闻

如何报告安全问题

扫描器检测到的已发布 CVE

根据定义,任何由软件扫描器检测到的 CVE 都是公开的。这意味着 Solr PMC 和世界其他地区可能已经知道它。

为了找到解决已检测到的 CVE 的前进方向,我们建议您按照以下流程操作,以获得最快的结果

  1. 查看本页面的下方,查看 CVE 是否列为在 Solr 中可利用。
  2. 查看正式发布的不可利用漏洞列表,查看 CVE 是否列为在 Solr 中不可利用。
  3. 搜索Solr 用户邮件列表存档,查看是否有人提到了此依赖项 CVE。
  4. 如果没有人提到,请订阅用户邮件列表,然后发送电子邮件询问有关 CVE 的信息。

注意事项

  • 请在用户列表中讨论可能需要升级库。
  • 请在 Jira 中搜索 CVE 编号,查看我们是否已经在解决它。
  • 请创建 Jira 问题和相关的拉取请求,以提出和讨论对单个特定依赖项的升级。
  • 请不要附加扫描报告,或将扫描输出粘贴到 Jira 中(只需链接 CVE 即可)。
  • 请不要将扫描报告发送到下面的安全电子邮件,它将被忽略。
  • 请使用VEX 自动执行其中的一些操作,并分享您的经验。

Jira 的使用

Jira 用于讨论具体的开发修改。任何仅包含扫描报告输出或同时引用多个依赖项的 Jira 可能会被忽略/关闭。大量人员向我们发送有关已知事项的报告,这对我们(志愿者)的时间造成了严重影响,因此请在打开新问题之前搜索 Jira

您在 Solr 中发现的新漏洞

Solr PMC 非常感谢您报告在 Solr 本身中发现的新安全漏洞,或通过依赖项利用漏洞的演示。重要的是不要在公共邮件列表上发布以前未知的漏洞或漏洞演示代码。请通过遵循这些ASF 指南来负责任地披露新漏洞。报告在 Solr 中新发现的漏洞的联系电子邮件为[email protected].

在报告新漏洞之前,请确保您已针对运行受支持版本并已使用以下方法正确配置的 Solr 实例进行了测试

  1. 身份验证 - 在没有登录的情况下演示的漏洞浪费了我们的时间,因为 Solr 不应该以这种方式运行,使全世界都能访问其所有 API。在不强制用户登录的情况下运行与使用众所周知的默认 root 密码运行 linux 或使用没有密码的 root 帐户运行数据库一样无效。
  2. 授权 - 除非经过身份验证的用户被配置了应该禁止该操作的角色,或者该操作无论角色如何都不应该允许任何用户执行,否则它不属于漏洞。您的报告应该说明您为什么认为此操作对于您测试过的角色来说是不可接受的。

VEX

由于检查 Solr 依赖项中的 CVE 是否会影响您的 Solr 部署是一个繁琐且容易出错的过程,因此我们正在尝试以机器可读的方式共享有关已知(不)影响 Solr 的咨询信息。

用于共享此信息的格式称为“VEX”格式。许多此类格式正在积极开发中,例如基于CycloneDXCSAF

我们目前正在以 CycloneDX 基于 JSON 的格式提供漏洞信息此处。我们非常想知道您的体验,并想知道还需要什么才能降低信噪比并使这些工具更有效。我们邀请您加入security-discuss邮件列表中的讨论,或者如果您更喜欢私下协作,请联系[email protected]。了解您正在使用什么安全扫描/报告工具、确切使用哪些工件以及其供应商是否/如何支持 VEX 可能很有趣。我们很乐意与您合作,看看我们是否可以以其他变体或格式提供此信息。

更多信息

您可以在我们的 Wiki 上找到更多与安全相关的的信息:https://cwiki.apache.org/confluence/display/SOLR/SolrSecurity

Apache Solr 的最新 CVE 报告

以下是已宣布的 CVE 漏洞列表。这些漏洞也以ATOM 提要的形式提供。

CVE# 日期 公告
CVE-2024-31391 2024-04-12 Solr-Operator 存活性和就绪性探测可能会泄露基本身份验证凭据
CVE-2023-50291 2024-02-08 Apache Solr 由于系统属性屏蔽逻辑不一致,可能会泄露某些密码
CVE-2023-50292 2024-02-08 Apache Solr Schema Designer 盲目“信任”所有配置集,可能导致未经身份验证的用户执行远程代码
CVE-2023-50298 2024-02-08 Apache Solr 可以通过流表达式公开 ZooKeeper 凭据
CVE-2023-50386 2024-02-08 Apache Solr:备份/恢复 API 允许在恶意配置集中部署可执行文件
CVE-2023-50290 2024-01-12 Apache Solr 允许读取主机环境变量
CVE-2022-39135 2022-11-20 Apache Solr 通过 /sql 处理程序容易受到 CVE-2022-39135 的攻击
CVE-2021-44548 2021-12-18 Apache Solr 通过 DataImportHandler 存在信息泄露漏洞
CVE-2021-44228 2021-12-10 Apache Solr 受 Apache Log4J CVE-2021-44228 的影响
CVE-2021-27905 2021-04-12 使用复制处理程序的 SSRF 漏洞
CVE-2021-29262 2021-04-12 Zookeeper ACL 应用错误会导致配置的身份验证和授权设置泄露
CVE-2021-29943 2021-04-12 Apache Solr 未经授权的用户可能能够对集合执行未经授权的读/写操作
CVE-2020-13957 2020-10-12 添加到 Apache Solr 中的未经身份验证的配置集上传检查可以被绕过
CVE-2020-13941 2020-08-14 Apache Solr 信息泄露漏洞
CVE-2019-17558 2019-12-30 Apache Solr 通过 VelocityResponseWriter 执行远程代码

2024-04-12,CVE-2024-31391:Solr-Operator 存活性和就绪性探测可能会泄露基本身份验证凭据

严重程度
中等

受影响的版本
Solr Operator 0.3.0 到 0.8.0

描述:Apache Solr Operator 中的敏感信息插入日志文件漏洞。

Solr sked 用于引导 Solr 安全性,运算符将启用基本身份验证并创建多个帐户以访问 Solr:包括“solr”和“admin”帐户供最终用户使用,以及“k8s-oper”帐户供运算符用于其自身对 Solr 的请求。这些运算符请求的一个常见来源是运行状况检查:存活性和就绪性探测以及启动探测都用于确定 Solr 的运行状况和接收流量的能力。默认情况下,运算符将配置用于这些探测的 Solr API 免于身份验证,但用户也可以专门请求在探测端点上也需要身份验证。每当其中一个探测失败时,如果使用了身份验证,Solr Operator 将创建一个包含“k8s-oper”帐户的用户名和密码的 Kubernetes“事件”。

在受影响的版本范围内,此漏洞会影响任何 solrcloud 资源,这些资源(1)通过使用.solrOptions.security.authenticationType=basic选项引导安全性,以及(2)通过设置.solrOptions.security.probesRequireAuth=true要求在探测上使用身份验证。

缓解措施:建议用户升级到 Solr Operator 版本 0.8.1,该版本通过确保探测不再打印用于 Solr 请求的凭据来修复此问题。用户还可以通过使用设置.solrOptions.security.probesRequireAuth=false在运行状况检查探测上禁用身份验证来缓解漏洞。

参考
JIRA - SOLR-17216
CVE - CVE-2024-31391


2024-02-08,CVE-2023-50291:Apache Solr 由于系统属性屏蔽逻辑不一致,可能会泄露某些密码

严重程度
中等

受影响的版本

  • Apache Solr 6.0.0 到 8.11.2
  • Apache Solr 9.0.0 在 9.3.0 之前

描述
Apache Solr 中的凭据保护不足漏洞。

此问题会影响 Apache Solr:从 6.0.0 到 8.11.2,从 9.0.0 到 9.3.0 之前。发布 Solr 进程的 Java 系统属性的两个端点之一 /admin/info/properties 仅设置为隐藏名称中包含“password”的系统属性。有许多敏感的系统属性,例如“basicauth”和“aws.secretKey”不包含“password”,因此它们的值通过“/admin/info/properties”端点发布。此端点在 Solr 管理页面主屏幕上填充系统属性列表,使公开的凭据在 UI 中可见。

此 /admin/info/properties 端点在“config-read”权限下受到保护。因此,启用了授权的 Solr Clouds 仅通过具有“config-read”权限的已登录用户才容易受到攻击。建议用户升级到版本 9.3.0 或 8.11.3,该版本修复了此问题。现在,一个选项控制所有端点的 Java 系统属性隐藏,即“-Dsolr.hiddenSysProps”。默认情况下,所有已知的敏感属性(包括“-Dbasicauth”)以及名称中包含“secret”或“password”的任何属性都将被隐藏。

无法升级的用户也可以使用以下 Java 系统属性来解决此问题
-Dsolr.redaction.system.pattern=".*(password|secret|basicauth).*"

缓解措施
建议用户升级到版本 8.11.3、9.3.0 或更高版本,该版本具有一致的 systemProperty 屏蔽逻辑。

致谢:Michael Taggart(报告人)

参考
JIRA - SOLR-16809
CVE - CVE-2023-50291


2024-02-08,CVE-2023-50292:Apache Solr Schema Designer 盲目“信任”所有配置集,可能导致未经身份验证的用户执行远程代码

严重程度
中等

受影响的版本

  • Apache Solr 6.0.0 到 8.11.2
  • Apache Solr 9.0.0 在 9.3.0 之前

描述
Apache Solr 中的针对关键资源的权限分配不正确、对动态管理的代码资源控制不当漏洞。

此问题会影响 Apache Solr:从 8.10.0 到 8.11.2,从 9.0.0 到 9.3.0 之前。

Schema Designer 的引入是为了允许用户更轻松地配置和测试新的 Schema 和配置集。但是,在创建此功能时,没有考虑这些配置集的“信任”(身份验证)。外部库加载仅适用于“受信任的”配置集(由经过身份验证的用户创建),因此未经身份验证的用户无法执行远程代码执行。由于 Schema Designer 在加载配置集时没有考虑其“信任”,因此允许由未经身份验证的用户创建的配置集在 Schema Designer 中使用时加载外部库。

缓解措施
建议用户升级到版本 8.11.3、9.3.0 或更高版本。

致谢:Skay(报告人)

参考
JIRA - SOLR-16777
CVE - CVE-2023-50292


2024-02-08, CVE-2023-50298: Apache Solr 可通过流式表达式泄露 ZooKeeper 凭据

严重程度

受影响的版本

  • Apache Solr 6.0.0 到 8.11.2
  • Apache Solr 9.0.0 之前版本,直至 9.4.1

描述
Apache Solr 中存在敏感信息泄露漏洞。此漏洞影响 Apache Solr:从 6.0.0 到 8.11.2,从 9.0.0 到 9.4.1 之前的版本。

Solr 流式表达式允许用户使用 "zkHost" 参数从其他 Solr 云中提取数据。当原始 SolrCloud 设置为使用 ZooKeeper 凭据和 ACL 时,它们将被发送到用户提供的任何 "zkHost"。攻击者可以设置一个服务器来模拟 ZooKeeper,该服务器接受带有凭据和 ACL 的 ZooKeeper 请求并提取敏感信息,然后使用模拟服务器的地址在 "zkHost" 中发送流式表达式。流式表达式通过 "/streaming" 处理程序公开,具有 "read" 权限。

缓解措施
建议用户升级到 8.11.3 或 9.4.1 版本,这些版本修复了此问题。从这些版本开始,只有与服务器地址相同的 zkHost 值(无论 chroot 如何),在连接时才会使用给定的 ZooKeeper 凭据和 ACL。

致谢: Qing Xu(报告者)

参考
JIRA - SOLR-17098
CVE - CVE-2023-50298


2024-02-08, CVE-2023-50386: Apache Solr:备份/还原 API 允许在恶意 ConfigSets 中部署可执行文件

严重程度
中等

受影响的版本

  • Apache Solr 6.0.0 到 8.11.2
  • Apache Solr 9.0.0 之前版本,直至 9.4.1

描述
Apache Solr 中存在动态管理代码资源控制不当、不受限制的文件上传(危险类型)、包含来自不受信任控制范围的功能漏洞。此漏洞影响 Apache Solr:从 6.0.0 到 8.11.2,从 9.0.0 到 9.4.1 之前的版本。

在受影响的版本中,Solr ConfigSets 接受通过 ConfigSets API 上传的 Java jar 和 class 文件。在备份 Solr 集合时,这些 configSet 文件将在使用 LocalFileSystemRepository(备份的默认值)时保存到磁盘。如果备份保存到 Solr 在其 ClassPath/ClassLoaders 中使用的目录,那么 jar 和 class 文件将可用于任何 ConfigSet,无论是受信任的还是不受信任的。

当 Solr 以安全方式运行(启用授权)时,正如强烈建议的那样,此漏洞仅限于扩展备份权限,使其能够添加库。

缓解措施
建议用户升级到 8.11.3 或 9.4.1 版本,这些版本修复了此问题。在这些版本中,添加了以下保护措施

  • 用户不再能够上传可以被 Java ClassLoader 执行的文件到 configSet。
  • 备份 API 限制将备份保存到 ClassLoader 中使用的目录。

致谢: L3yx(报告者)

参考
JIRA - SOLR-16949
CVE - CVE-2023-50386


2024-01-12, CVE-2023-50290: Apache Solr 允许读取主机环境变量

严重程度
重要

受影响的版本
Solr 9.0 到 9.2.1

描述
Apache Solr 中存在敏感信息泄露漏洞。Solr Metrics API 发布了每个 Apache Solr 实例可用的所有未受保护的环境变量。用户可以指定要隐藏的环境变量,但是,默认列表旨在适用于已知的秘密 Java 系统属性。环境变量不能像 Java 系统属性那样在 Solr 中严格定义,并且可以为整个主机设置,这与为每个 Java 进程设置的 Java 系统属性不同。

Solr Metrics API 受 "metrics-read" 权限保护。因此,设置了授权的 Solr 云将仅通过具有 "metrics-read" 权限的用户受到攻击。

缓解措施
建议用户升级到 9.3.0 或更高版本,在这些版本中,环境变量不会通过 Metrics API 发布。

参考
JIRA - SOLR-15233
CVE - CVE-2023-50290


2022-11-20, Apache Solr 通过 /sql 处理程序易受 CVE-2022-39135 攻击

受影响的版本
Solr 6.5 到 8.11.2 Solr 9.0

描述
Apache Calcite 存在一个漏洞,CVE-2022-39135,该漏洞可在 Apache Solr 的 SolrCloud 模式下利用。如果不受信任的用户可以向 Solr 的“/sql”处理程序提供 SQL 查询(即使是通过代理/其他应用程序间接提供),那么用户可以执行 XML 外部实体 (XXE) 攻击。这可能是由一些 Solr 部署者为了让内部分析师使用基于 JDBC 的工具而暴露的,但不太可能被授予更广泛的受众。

影响
XXE 攻击可能导致泄露机密数据、拒绝服务、服务器端请求伪造 (SSRF)、来自 Solr 节点的端口扫描以及其他系统影响。

缓解措施
大多数 Solr 安装不使用 SQL 功能。对于此类用户,使用防火墙的标准 Solr 安全建议应该足够。尽管如此,该功能可以被禁用。从 Solr 9 开始,它已被模块化,因此成为可选功能,因此对于不使用它的 Solr 9 用户来说,不需要任何操作。不使用 SolrCloud 的用户根本无法使用该功能。对于希望禁用它的其他用户,您必须在 solrconfig.xml 中注册一个请求处理程序,该处理程序会屏蔽底层功能,如下所示

  <requestHandler name="/sql" class="solr.NotFoundRequestHandler"/>

需要此 SQL 功能的用户被迫升级到 Solr 9.1。如果发布了 Solr 8.11.3,那么它也将成为一个选项。简单地替换 Calcite 和其他 JAR 文件可能大部分有效,但可能会失败,具体取决于查询的细节。有兴趣这样做或修补他们自己的 Solr 版本的用户应该查看 SOLR-16421 以获取源代码补丁。

致谢
CoreMedia GmbH 的 Andreas Hubold

参考
JIRA - SOLR-16421
CVE - CVE-2022-39135


2021-12-18, CVE-2021-44548: Apache Solr 通过 DataImportHandler 存在信息泄露漏洞

严重程度
中等

受影响的版本
所有早于 8.11.1 的版本。受影响的平台:Windows。

描述
Apache Solr 的 DataImportHandler 中存在不当输入验证漏洞,允许攻击者提供 Windows UNC 路径,导致从 Solr 主机到网络上的另一个主机进行 SMB 网络调用。如果攻击者对网络有更广泛的访问权限,这可能会导致 SMB 攻击,从而导致

  • 敏感数据的泄露,例如操作系统用户哈希(NTLM/LM 哈希),
  • 在配置错误的系统中,SMB 中继攻击,这会导致用户在 SMB 共享上冒充身份,或者在最坏的情况下导致远程代码执行

此漏洞影响所有早于 8.11.1 的 Apache Solr 版本。此漏洞仅影响 Windows。

缓解措施
升级到 Solr 8.11.1,并/或确保只有受信任的客户端可以向 Solr 的 DataImport 处理程序发出请求。

致谢
Apache Solr 感谢 Nsfocus 安全团队的 LaiHan 报告了此问题

参考
Jira 问题 SOLR-15826


2021-12-10, Apache Solr 受 Apache Log4J CVE-2021-44228 影响

严重程度:严重

受影响的版本:7.4.0 到 7.7.3,8.0.0 到 8.11.0

描述:早于 8.11.1 的 Apache Solr 版本使用捆绑的 Apache Log4J 库,该库易受 RCE 攻击。有关完整影响和更多详细信息,请咨询 Log4J 安全页面。

早于 7.4 的 Apache Solr 版本(即 Solr 5、Solr 6 和 Solr 7 到 7.3)使用 Log4J 1.2.17,对于使用包含 JMS Appender 的非默认日志记录配置的安装,该版本可能存在漏洞,请参阅 https://github.com/apache/logging-log4j2/pull/608#issuecomment-990494126 以获取讨论。

Solr 的 Prometheus Exporter 也使用 Log4J,但它不记录用户输入或数据,因此我们认为那里没有风险。

Solr 易受后续 CVE-2021-45046CVE-2021-45105 攻击。Solr 的 wiki 中列出了这些 CVE 和其他 CVE 以及一些理由:https://cwiki.apache.org/confluence/display/SOLR/SolrSecurity#SolrSecurity-SolrandVulnerabilityScanningTools

缓解措施:以下任何一项都足以防止 Solr 服务器出现此漏洞

  • 升级到 Solr 8.11.1 或更高版本(如果可用),其中将包含更新的 Log4J 依赖项版本(>= 2.16.0)。
  • 如果您使用的是 Solr 的官方 Docker 镜像,它已经在 Docker Hub 上列出的所有受支持版本中得到缓解:https://hub.docker.com/_/solr。您可能需要重新拉取镜像。
  • 手动更新运行时类路径上的 Log4J 版本,并重新启动 Solr 应用程序。
  • (Linux/MacOS) 编辑您的 solr.in.sh 文件以包含:SOLR_OPTS="$SOLR_OPTS -Dlog4j2.formatMsgNoLookups=true"
  • (Windows) 编辑您的 solr.in.cmd 文件以包含:set SOLR_OPTS=%SOLR_OPTS% -Dlog4j2.formatMsgNoLookups=true
  • 按照 https://logging.apache.ac.cn/log4j/2.x/security.html 中列出的任何其他缓解措施进行操作

Log4J 安全页面将设置 log4j2.formatMsgNoLookups=true 称为“不可信”的缓解措施。实际上,这取决于情况。我们已经查看了根本原因并审计了导致漏洞的代码路径,我们相信这种缓解措施足以用于 Solr。请参阅 https://lists.apache.org/thread/kgh63sncrsm2bls884pg87mnt8vqztmz 以获取讨论。

参考资料: https://logging.apache.ac.cn/log4j/2.x/security.html


2021-04-12, CVE-2021-27905: 复制处理程序存在 SSRF 漏洞

严重程度:

受影响的版本:7.0.0 到 7.7.3 8.0.0 到 8.8.1

描述:ReplicationHandler(通常在 Solr 核心下的 "/replication" 注册)有一个 "masterUrl"(也称为 "leaderUrl" 别名)参数,用于指定另一个 Solr 核心上的另一个 ReplicationHandler,将索引数据复制到本地核心。为了防止 SSRF 漏洞,Solr 应该检查这些参数是否与它用于 "shards" 参数的类似配置相同。在修复此错误之前,它没有这样做。

缓解措施:以下任何一项都足以防止此漏洞

  • 升级到 Solr 8.8.2 或更高版本。
  • 如果无法升级,请考虑应用 SOLR-15217 中的补丁
  • 确保对复制处理程序的任何访问都纯粹是 Solr 内部访问。通常,它仅在诊断/信息目的方面被外部访问。

信用: 由来自 QI-ANXIN Cert(奇安信科技集团股份有限公司)的 Caolinhong(Skay) 报告。

参考资料: SOLR-15217:CVE-2021-27905:Replication 处理程序的 SSRF 漏洞


2021-04-12,CVE-2021-29262:Zookeeper ACL 误用会导致配置的认证和授权设置泄露

严重程度:

受影响的版本:7.0.0 到 7.7.3 8.0.0 到 8.8.1

描述: 在启动 Apache Solr 8.8.2 之前的版本时,如果配置了 SaslZkACLProvider 或 VMParamsAllAndReadonlyDigestZkACLProvider 且没有现有的 security.json znode,如果配置了可选的只读用户,则 Solr 不会将该节点视为敏感路径,并允许读取它。此外,对于任何 ZkACLProvider,如果 security.json 已经存在,Solr 不会自动更新 ACL。

缓解措施:以下任何一项都足以防止此漏洞

  • 手动在 /security.json znode 上设置适当的 ACL。
  • 升级到 Solr 8.8.2 或更高版本。
  • 如果升级不可行,请考虑应用 SOLR-15249 中的补丁。
  • 确保任何对 zookeeper 的访问仅由受信任的应用程序进行。

信用: Timothy Potter 和 Mike Drob,Apple Cloud Services

参考资料: SOLR-15249:CVE-2021-29262:Zookeeper ACL 误用会导致配置的认证和授权设置泄露


2021-04-12,CVE-2021-29943:Apache Solr 未经授权的用户可能能够对集合执行未经授权的读/写操作

严重程度:

受影响的版本:7.0.0 到 7.7.3 8.0.0 到 8.8.1

描述: 在使用 ConfigurableInternodeAuthHadoopPlugin 进行身份验证时,Apache Solr 8.8.2 之前的版本将使用服务器凭据而不是原始客户端凭据转发/代理分布式请求。这会导致接收主机上的授权解析不正确。

缓解措施:以下任何一项都足以防止此漏洞

  • 升级到 Solr 8.8.2 或更高版本。
  • 如果升级不可行,请考虑应用 SOLR-15233 中的补丁。
  • 使用其他身份验证插件,例如 KerberosPlugin 或 HadoopAuthPlugin

信用: Geza Nagy

参考资料: SOLR-15233:CVE-2021-29943:Apache Solr 未经授权的用户可能能够对集合执行未经授权的读/写操作


2020-10-12,CVE-2020-13957:Apache Solr 中添加到未经身份验证的配置集上传的检查可以绕过

严重程度:

受影响的版本: 6.6.0 到 6.6.6 7.0.0 到 7.7.3 8.0.0 到 8.6.2

描述: Solr 阻止在通过 API 上传的配置集(未经身份验证/授权)中配置一些被认为是危险的特性(可能用于远程代码执行)。通过使用 UPLOAD/CREATE 操作的组合,可以绕过阻止此类特性的检查。

缓解措施:以下任何一项都足以防止此漏洞

  • 如果未使用,请通过设置系统属性禁用配置集 API 中的 UPLOAD 命令:configset.upload.enabled 设置为 false (查看文档)
  • 使用身份验证/授权,并确保不允许未知请求 (查看文档)
  • 升级到 Solr 8.6.3 或更高版本。
  • 如果升级不可行,请考虑应用 SOLR-14663 中的补丁。
  • 任何 Solr API(包括管理 UI)都不设计为暴露给不受信任的方。调整您的防火墙,以便仅允许受信任的计算机和人员访问。

信用: Tomás Fernández Löbbe,András Salamon

参考资料: SOLR-14925:CVE-2020-13957:添加到未经身份验证的配置集上传的检查可以绕过


2020-08-14,CVE-2020-13941:Apache Solr 信息泄露漏洞

严重程度: 中等

受影响的版本
在 Solr 8.6 之前。某些风险特定于 Windows。

描述: 在 SOLR-14515(私有)中报告,并在 SOLR-14561(公开)中修复,在 Solr 版本 8.6.0 中发布。Replication 处理程序(https://solr.net.cn/guide/8_6/index-replication.html#http-api-commands-for-the-replicationhandler)允许命令备份、恢复和删除备份。这些命令中的每一个都带有一个位置参数,该参数未经验证,即您可以读取/写入 solr 用户可以访问的任何位置。

在 Windows 系统上,还可以使用 SMB 路径,例如 \10.0.0.99\share\folder,导致

  • 从网络上的服务器(或已挂载的远程文件系统)恢复另一个 SolrCore 的可能性可能会导致
    • 公开攻击者原本不应该访问的搜索索引数据
    • 通过从攻击者控制的远程文件系统加载索引数据来完全替换索引数据
  • 启动 SMB 攻击,这可能会导致
    • 敏感数据的泄露,例如操作系统用户哈希(NTLM/LM 哈希),
    • 在配置错误的系统中,SMB 中继攻击,这会导致用户在 SMB 共享上冒充身份,或者在最坏的情况下导致远程代码执行

缓解措施: 升级到 Solr 8.6,并/或确保只有受信任的客户端可以向 Solr 的 Replication 处理程序发出请求。

信用: Matei "Mal" Badanoiu


2019-12-30,CVE-2019-17558:Apache Solr 通过 VelocityResponseWriter 实现 RCE

严重程度:

供应商
Apache 软件基金会

受影响的版本: 5.0.0 到 8.3.1

描述
受影响的版本容易受到通过 VelocityResponseWriter 进行的远程代码执行的攻击。可以通过配置集 velocity/ 目录中的 Velocity 模板或作为参数提供 Velocity 模板。用户定义的配置集可能包含可渲染的、潜在的恶意模板。默认情况下,参数提供的模板被禁用,但可以通过设置 params.resource.loader.enabled 来启用,方法是定义一个将该设置设置为 true 的响应编写器。定义响应编写器需要配置 API 访问权限。

Solr 8.4 完全删除了 params 资源加载器,并且仅在配置集为 trusted(已由经过身份验证的用户上传)时才启用配置集提供的模板渲染。

缓解措施
确保您的网络设置配置为仅允许受信任的流量与 Solr 通信,尤其是与配置 API 的通信。

致谢
Github 用户 s00py

参考


Apache Solr 依赖项的 CVE 报告

以下是 Apache Solr 依赖项中 CVE 漏洞的列表,以及它们对 Solr 的适用性状态。

我们目前正在尝试以 机器可读的 VEX 格式 提供此信息,并鼓励您参与。

id 版本 jar 状态 详细信息
CVE-2022-33980 < 9.1 commons-configuration2-2.7.jar 不受影响 Solr 仅将 commons-configuration2 用于“hadoop-auth”(用于 Kerberos)。它仅用于加载 Hadoop 配置文件,这些文件仅由受信任的管理员提供,而不是外部(不受信任的)。
CVE-2022-42889 < 9.1 commons-text-1.9.jar 不受影响 Solr 在 LoadAdminUiServlet 中直接使用 commons-text(StringEscapeUtils.escapeEcmaScript),该 Servlet 不易受攻击。Solr 还具有一个“hadoop-auth”模块,该模块使用 Apache Hadoop,它通过 commons-configuration2 使用 commons-text。对于 Solr,问题仅限于加载 Hadoop 配置文件,这些文件仅由受信任的管理员提供,而不是外部(不受信任的)。
CVE-2022-25168 < 9.1 hadoop-common-3.2.2.jar 不受影响 Solr 不会使用易受攻击的代码,因为 Solr 仅将 HDFS 用作客户端。
CVE-2021-44832 7.4-8.11.1 log4j-core-2.14.1.jar, log4j-core-2.16.0.jar 不受影响 Solr 的默认日志配置不使用 JDBCAppender,我们不认为用户会想要使用它或其他模糊的追加器。
CVE-2021-45105CVE-2021-45046 7.4-8.11.1 log4j-core-2.14.1.jar, log4j-core-2.16.0.jar 不受影响 Solr 使用的 MDC 数据用于集合、分片、副本、核心和节点名称,以及潜在的跟踪 ID,这些数据都经过了清理。此外,Solr 的默认日志配置不使用双美元符号,我们不认为用户会想要这样做。
CVE-2020-13955 8.1.0-至今 avatica-core-1.13.0.jar, calcite-core-1.18.0.jar 不受影响 Solr 的 SQL 适配器不使用易受攻击的类“HttpUtils”。Calcite 仅使用它来与 Druid 或 Splunk 通信。
CVE-2018-10237 5.4.0-至今 carrot2-guava-18.0.jar 不受影响 仅与 Carrot2 聚类引擎一起使用。
CVE-2014-0114 4.9.0-7.5.0 commons-beanutils-1.8.3.jar 不受影响 这仅在编译时使用,不能用于攻击 Solr。由于它通常是不必要的,因此从 7.5.0 开始已删除了该依赖项。请参阅 SOLR-12617。
CVE-2019-10086 8.0.0-8.3.0 commons-beanutils-1.9.3.jar 不受影响 虽然 commons-beanutils 在 7.5 中被删除,但它在 8.0 中被错误地添加回来,并在 8.3 中再次被删除。易受攻击的类未在任何 Solr 代码路径中使用。此 jar 仍然是 Velocity 和 hadoop-common 的依赖项,但 Solr 在我们的实现中不使用它。
CVE-2012-2098CVE-2018-1324CVE-2018-11771 4.6.0-至今 commons-compress(仅作为 Ant 1.8.2 的一部分) 不受影响 仅在测试框架和构建时使用。
CVE-2018-1000632 4.6.0-至今 dom4j-1.6.1.jar 不受影响 仅在 Solr 测试中使用。
CVE-2018-10237 4.6.0-至今 guava-*.jar 不受影响 仅在测试中使用。
CVE-2017-15718 6.6.1-7.6.0 hadoop-auth-2.7.4.jar, hadoop-hdfs-2.7.4.jar(所有 Hadoop) 不受影响 不影响 Solr,因为 Solr 将 Hadoop 用作客户端库。
CVE-2017-14952 6.0.0-7.5.0 icu4j-56.1.jar, icu4j-59.1.jar 不受影响 问题仅适用于 ICU 的 C++ 版本,而不适用于 ICU4J,而 ICU4J 是 Lucene 使用的。截至 Lucene/Solr 7.6.0,ICU4J 的版本为 v63.2。
CVE-2017-15095CVE-2017-17485CVE-2017-7525CVE-2018-5968CVE-2018-7489CVE-2019-12086CVE-2019-12384CVE-2018-12814CVE-2019-14379CVE-2019-14439CVE-2020-35490CVE-2020-35491CVE-2021-20190CVE-2019-14540CVE-2019-16335 4.7.0-至今 jackson-databind-*.jar 不受影响 这些 CVE 以及自 2017 年以来大多数已知的 jackson-databind CVE 都与在反序列化不受信任的数据时可能被利用的有问题的“小工具”有关。Jackson 开发人员描述了必须满足的 4 个条件才能利用有问题的“小工具”。请参阅 https://medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062。Solr 使用 jackson-databind 并不满足 4 个条件中的 1 个,这使得这些 CVE 不可利用。Solr 不满足的特定条件是第 3 个条件:“启用多态类型处理”Solr 不包含任何多态类型处理,并且 Solr 不配置 jackson-databind 反序列化/序列化以期望或在序列化 JSON 中包含类名。两个 CVE,2019-14540 和 2019-16335,与 HikariConfig 和 HikariDataSource 类有关,Solr 的代码库中都没有使用这些类。
CVE-2019-10241CVE-2019-10247 7.7.0-8.2 jetty-9.4.14 不受影响 Solr 在 8.2 版本中升级到 Jetty 9.4.19。此外,在 8.1 和 7.7.2 中修复了利用这些漏洞的路径。早期版本可以手动修补其配置,如 SOLR-13409 中所述。
CVE-2020-27218 7.3.0-8.8.0 jetty-9.4.0 到 9.4.34 不受影响 仅通过使用 Jetty 的 GzipHandler 才能利用,而 GzipHandler 仅在嵌入式 Solr 服务器中实现。
CVE-2020-27223 7.3.0-至今 jetty-9.4.6 到 9.4.36 不受影响 仅在 Solr 的 webapp 目录作为符号链接部署时才可利用,这不是 Solr 的默认设置。
CVE-2021-33813 至今 jdom-*.jar 不受影响 JDOM 仅在 Solr Cell 中使用,而 Solr Cell 不应在生产环境中使用,这使得漏洞无法利用。它是 Apache Tika 的依赖项,Apache Tika 已经分析了该问题,并确定漏洞仅限于两个在搜索应用程序中不常用的库,有关详细信息,请参阅 TIKA-3488。由于 Tika 应该在 Solr 之外使用,因此如果担心暴露于此问题,请使用更新了受影响库的 Tika 版本。
CVE-2018-1000056 4.6.0-7.6.0 junit-4.10.jar 不受影响 JUnit 仅在测试中使用;CVE 仅指 Solr 未使用的 Jenkins 插件。
CVE-2014-7940CVE-2016-6293CVE-2016-7415CVE-2017-14952CVE-2017-17484CVE-2017-7867CVE-2017-7868 7.3.1 lucene-analyzers-icu-7.3.1.jar 不受影响 所有这些问题都适用于 ICU 的 C++ 版本,而不是 Lucene 使用的 ICU4J。
CVE-2019-16869 8.2-8.3 netty-all-4.1.29.Final.jar 不受影响 这未包含在 Solr 中,但它是 ZooKeeper 3.5.5 的依赖项。该版本在 ZooKeeper 3.5.6 中进行了升级,并包含在 Solr 8.3 中。CVE 中提到的特定类未在 Solr(或 ZooKeeper 中,据 Solr 社区所知)中使用。
CVE-2017-14868CVE-2017-14949 5.2.0-至今 org.restlet-2.3.0.jar 不受影响 Solr 不应暴露在防火墙之外,因为恶意攻击者可以发送 HTTP 请求。这两个 CVE 特别涉及 Solr 在任何代码路径中都不使用的类(分别为 SimpleXMLProvider 和 XmlRepresentation)。
CVE-2015-5237 6.5.0-至今 protobuf-java-3.1.0.jar 不受影响 Hadoop 和 Calcite 的依赖项。??
CVE-2018-1471 5.4.0-7.7.2, 8.0-8.3 simple-xml-2.7.1.jar 不受影响 Carrot2 的依赖项,在编译期间使用,而不是在运行时使用(参见 SOLR-769)。此 .jar 在 Solr 8.3 中被替换,并回溯到 7.7.3(参见 SOLR-13779)。
CVE-2018-8088 4.x-至今 slf4j-api-1.7.24.jar, jcl-over-slf4j-1.7.24.jar, jul-to-slf4j-1.7.24.jar 不受影响 报告的 CVE 影响 org.slf4j.ext.EventData,该类未在 Solr 中使用。
CVE-2018-1335 7.3.1-7.5.0 tika-core.1.17.jar 不受影响 Solr 不运行 tika-server,因此这不是问题。
CVE- 7.3.1-至今 tika-core.*.jar 不受影响 所有可能成为 Solr 漏洞的 Tika 问题,只有在使用 SolrCell 索引不受信任的文件时才能被利用。这在生产系统中不推荐,因此 Solr 不认为这些是 Solr 的有效 CVE。
CVE- 6.6.2-至今 velocity-tools-2.0.jar 不受影响 Solr 不附带 Struts jar。这是一个传递的 POM 列表,不包含在 Solr 中(参见 SOLR-2849 中的注释)。
CVE-2016-6809CVE-2018-1335CVE-2018-1338CVE-2018-1339 5.5.5, 6.2.0-至今 vorbis-java-tika-0.8.jar 不受影响 参见 https://github.com/Gagravarr/VorbisJava/issues/30;报告的 CVE 与 OggVorbis 无关。
CVE-2012-0881 ~2.9-至今 xercesImpl-2.9.1.jar 不受影响 仅在 Lucene Benchmarks 和 Solr 测试中使用。