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 feed 获取

CVE# 日期 公告
CVE-2024-45216 2024-10-14 Apache Solr:可以使用虚假的 URL 路径结尾进行身份验证绕过
CVE-2024-45217 2024-10-14 Apache Solr:在备份还原命令期间创建的 ConfigSet 被隐式信任
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 盲目地“信任”所有 configset,可能导致未经身份验证的用户执行 RCE
CVE-2023-50298 2024-02-08 Apache Solr 可以通过 Streaming Expressions 公开 ZooKeeper 凭据
CVE-2023-50386 2024-02-08 Apache Solr:备份/还原 API 允许在恶意 ConfigSet 中部署可执行文件
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 Replication 处理程序的 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 中添加到未经身份验证的 configset 上传中的检查

2024-10-14,CVE-2024-45216:Apache Solr:可以使用虚假的 URL 路径结尾进行身份验证绕过

严重性
严重

受影响的版本

  • Apache Solr 5.3.0 至 8.11.4 之前
  • Apache Solr 9.0.0 至 9.7.0 之前

描述
Apache Solr 中存在不正确的身份验证漏洞。

使用 PKIAuthenticationPlugin 的 Solr 实例容易受到身份验证绕过的攻击,该插件在使用 Solr 身份验证时默认启用。在任何 Solr API URL 路径末尾添加虚假结尾,将允许请求跳过身份验证,同时保持与原始 URL 路径的 API 约定。此虚假结尾看起来像一个不受保护的 API 路径,但它在身份验证之后但在 API 路由之前在内部被剥离。

缓解措施
建议用户升级到版本 9.7.0 或 8.11.4,这些版本修复了此问题。

致谢: 刘华金(报告人)

参考
JIRA - SOLR-17417
CVE - CVE-2024-45216


2024-10-14,CVE-2024-45217:Apache Solr:在备份还原命令期间创建的 ConfigSet 被隐式信任

严重性
中等

受影响的版本

  • Apache Solr 6.6.0 至 8.11.4 之前
  • Apache Solr 9.0.0 至 9.7.0 之前

描述

Apache Solr 中存在资源不安全默认初始化漏洞。

通过还原命令创建的新 ConfigSet(从备份复制 ConfigSet 并赋予其新名称)在创建时未设置“受信任”元数据。如果缺少元数据,则不包含该标志的 ConfigSet 将被隐式信任,因此这会导致可能未使用经过身份验证的请求创建的“受信任” ConfigSet。“受信任” ConfigSet 能够将自定义代码加载到类加载器中,因此该标志应该仅在上传 ConfigSet 的请求经过身份验证和授权时设置。

缓解措施
此问题影响 Apache Solr:从 6.6.0 到 8.11.4 之前,从 9.0.0 到 9.7.0 之前。此问题不影响通过身份验证/授权保护的 Solr 实例。

主要建议用户在运行 Solr 时使用身份验证和授权。但是,升级到版本 9.7.0 或 8.11.4 将在其他情况下缓解此问题。

致谢: 刘华金(报告人)

参考
JIRA - SOLR-17418
CVE - CVE-2024-45217


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

严重性
中等

受影响的版本
Solr Operator 0.3.0 至 0.8.0

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

Solr 启动安全性时,Operator 将启用基本身份验证并创建多个用于访问 Solr 的帐户:包括供最终用户使用的“solr”和“admin”帐户,以及 Operator 用于向 Solr 发送自身请求的“k8s-oper”帐户。这些 Operator 请求的一个常见来源是健康检查:活性、就绪和启动探针都用于确定 Solr 的健康状况和接收流量的能力。默认情况下,Operator 配置用于这些探针的 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 Cloud 仅通过具有“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 盲目“信任”所有 configset,可能导致未经身份验证的用户进行 RCE

严重性
中等

受影响的版本

  • 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 和 configSet。但是,在创建该功能时,没有考虑这些 configSet 的“信任”(身份验证)。外部库加载仅适用于“受信任的”(由经过身份验证的用户创建)configSet,因此未经身份验证的用户无法执行远程代码执行。由于 Schema Designer 加载 configSet 时没有考虑其“信任”,因此允许在 Schema Designer 中使用由未经身份验证的用户创建的 configSet 加载外部库。

缓解措施
建议用户升级到 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 Cloud 中提取数据。当原始 SolrCloud 设置为使用 ZooKeeper 凭据和 ACL 时,它们将被发送到用户提供的任何“zkHost”。攻击者可以设置一个服务器来模拟 ZooKeeper,该服务器接受带有凭据和 ACL 的 ZooKeeper 请求并提取敏感信息,然后使用模拟服务器在“zkHost”中的地址发送流式表达式。流式表达式通过具有“read”权限的“/streaming”处理程序公开。

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

致谢: Qing Xu(报告者)

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


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

严重性
中等

受影响的版本

  • 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 ConfigSet 接受通过 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 指标 API 发布每个 Apache Solr 实例可用的所有未受保护的环境变量。用户可以指定要隐藏的环境变量,但是,默认列表旨在用于已知的秘密 Java 系统属性。环境变量不能像 Java 系统属性那样在 Solr 中严格定义,并且可能为整个主机设置,这与为每个 Java 进程设置的 Java 系统属性不同。

Solr 指标 API 受“metrics-read”权限保护。因此,设置了授权的 Solr Cloud 仅通过具有“metrics-read”权限的用户才会受到攻击。

缓解措施
建议用户升级到 9.3.0 或更高版本,其中环境变量不会通过指标 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,该漏洞可在 SolrCloud 模式下的 Apache Solr 中被利用。如果不受信任的用户可以向 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 攻击,从而导致

  • 泄露敏感数据,例如 OS 用户哈希值(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

描述: Apache Solr 8.11.1 之前的版本使用了捆绑的 Apache Log4J 库,该库存在 RCE 漏洞。有关完整影响和更多细节,请查阅 Log4J 安全页面。

Apache Solr 7.4 之前的版本(即 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 的影响。这些和其他 CVE 以及一些理由的列表在 Solr 的 wiki 中列出: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.org/log4j/2.x/security.html 上列出的任何其他缓解措施

Log4J 安全页面将设置 log4j2.formatMsgNoLookups=true 作为“不可靠的”缓解措施。实际上,这取决于具体情况。我们已经研究了根本原因并审核了导致漏洞的代码路径,我们相信这种缓解措施对于 Solr 来说是足够的。有关讨论,请参阅 https://lists.apache.org/thread/kgh63sncrsm2bls884pg87mnt8vqztmz

参考: https://logging.apache.org/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 (QI-ANXIN Technology Group Inc.) 的 Caolinhong(Skay) 报告

参考: SOLR-15217:CVE-2021-27905:复制处理程序中的 SSRF 漏洞


2021-04-12,CVE-2021-29262:错误应用的 Zookeeper ACL 可能导致配置的身份验证和授权设置泄露

严重性:

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

描述: 当使用 SaslZkACLProvider 或 VMParamsAllAndReadonlyDigestZkACLProvider 配置且没有现有的 security.json znode 启动 8.8.2 之前的 Apache Solr 版本时,如果配置了可选的只读用户,则 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 进行身份验证时,8.8.2 之前的 Apache Solr 版本会使用服务器凭据而不是原始客户端凭据转发/代理分布式请求。这将导致接收主机上不正确的授权解析。

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

  • 升级到 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 中未经身份验证的 configset 上传的检查

严重性:

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

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

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

  • 如果未使用,请通过将系统属性:configset.upload.enabled 设置为 false 来禁用 ConfigSets API 中的 UPLOAD 命令(请参阅文档
  • 使用身份验证/授权,并确保不允许未知的请求(请参阅文档
  • 升级到 Solr 8.6.3 或更高版本。
  • 如果无法升级,请考虑应用 SOLR-14663 中的补丁
  • 包括管理 UI 在内的任何 Solr API 都不是为暴露给非信任方而设计的。调整您的防火墙,以便只有受信任的计算机和人员才能被允许访问

致谢: Tomás Fernández Löbbe,András Salamon

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


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),它没有漏洞。Solr 还有一个“hadoop-auth”模块,该模块使用通过 commons-configuration2 使用 commons-text 的 Apache Hadoop。对于 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-45105, CVE-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-2098, CVE-2018-1324, CVE-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++ 版本,而不适用于 Lucene 使用的 ICU4J。截至 Lucene/Solr 7.6.0,ICU4J 为 v63.2
CVE-2017-15095, CVE-2017-17485, CVE-2017-7525, CVE-2018-5968, CVE-2018-7489, CVE-2019-12086, CVE-2019-12384, CVE-2018-12814, CVE-2019-14379, CVE-2019-14439, CVE-2020-35490, CVE-2020-35491, CVE-2021-20190, CVE-2019-14540, CVE-2019-16335 4.7.0 - 今天 jackson-databind-*.jar 不受影响 这些 CVE,以及自 2017 年以来大多数已知的 jackson-databind CVE,都与在反序列化不受信任的数据期间可能被利用的有问题的“gadget”相关。Jackson 开发人员描述了要利用有问题的 gadget 必须满足的 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-10241, CVE-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 中使用,不应在生产环境中使用,这使得该漏洞不可利用。它是 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-7940, CVE-2016-6293, CVE-2016-7415, CVE-2017-14952, CVE-2017-17484, CVE-2017-7867, CVE-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 中使用(据 Solr 社区所知,在 ZooKeeper 中也没有使用)。
CVE-2017-14868, CVE-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-6809, CVE-2018-1335, CVE-2018-1338, CVE-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 基准测试和 Solr 测试中使用。
CVE-2023-51074, GHSA-pfh2-hfmq-phg5 全部 json-path-2.8.0.jar 不受影响 我们使用 json-path 的唯一地方是用于查询(通过 Calcite)和转换/索引自定义 JSON。由于该建议描述的问题仅限于当前线程,并且允许查询/转换/索引的用户已被信任到一定程度会造成负载,因此该建议似乎对 json-path 在 Solr 中的使用方式没有影响。