Apache Solr 最新认证绕过漏洞CVE-2024-45216分析
字数 1404 2025-08-23 18:31:34

Apache Solr 认证绕过漏洞CVE-2024-45216分析报告

漏洞概述

CVE-2024-45216是Apache Solr中存在的一个认证绕过漏洞,影响使用PKIAuthenticationPlugin进行身份验证的Solr实例。攻击者可以通过构造特殊格式的URL路径绕过身份验证检查,从而在未认证的情况下访问受保护的API。

影响版本

  • 5.3.0 <= Apache Solr < 8.11.4
  • 9.0.0 <= Apache Solr < 9.7.0

漏洞原理

核心问题

漏洞存在于PKIAuthenticationPlugin的身份验证逻辑中,具体表现为:

  1. 路径验证不严谨PKIAuthenticationPlugin.doAuthenticate()方法使用requestURI.endsWith(PublicKeyHandler.PATH)来检查请求路径是否为公开路径(/admin/info/key)

  2. 路径处理不一致:Solr的路由处理会截取URL中冒号(:)前面的部分作为实际路径,但认证检查时使用的是完整URL

详细分析

  1. 认证流程

    • 请求首先经过SolrDispatchFilter.doFilter()
    • 调用authenticateRequest()进行身份验证
    • 如果使用PKIAuthenticationPlugin,会检查请求头SolrAuthSolrAuthV2
    • 对于路径检查,仅简单判断是否以/admin/info/key结尾
  2. 路由处理

    • HttpSolrCall.init()中,会处理URL路径:
      int idx = path.indexOf(':');
      if (idx > 0) {
          path = path.substring(0, idx);
      }
      
    • 这意味着类似/solr/admin/info/system:/admin/info/key的路径会被截取为/solr/admin/info/system
  3. 不一致性

    • 认证阶段:检查完整URL是否以/admin/info/key结尾 → 通过检查
    • 路由阶段:使用截取后的路径/solr/admin/info/system → 实际处理的是受保护API

环境搭建

  1. 搭建受影响版本的Solr环境
  2. 配置身份验证,启用PKIAuthenticationPlugin
  3. 调试配置:
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
    

漏洞复现

POC

GET /solr/admin/info/system:/admin/info/key HTTP/1.1
Host: 192.168.177.146:8983
SolrAuth: test
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

复现步骤

  1. 构造包含冒号的URL路径,前半部分为实际要访问的受保护API,后半部分为/admin/info/key
  2. 添加任意值的SolrAuthSolrAuthV2请求头
  3. 发送请求,观察是否绕过认证访问到受保护API

漏洞修复

官方修复方案:

  1. 修改路径检查逻辑,不再仅检查结尾
  2. 确保认证检查和路由处理的路径一致性

修复commit:
https://github.com/apache/solr/commit/bd61680bfd351f608867739db75c3d70c1900e38

安全建议

  1. 升级到安全版本:

    • 升级至Apache Solr 8.11.4或更高版本
    • 或升级至Apache Solr 9.7.0或更高版本
  2. 临时缓解措施:

    • 禁用PKIAuthenticationPlugin
    • 配置严格的访问控制规则

总结

CVE-2024-45216漏洞利用Solr在路径处理和认证检查时的不一致性,通过构造特殊格式的URL绕过身份验证。该漏洞影响范围广,利用简单,建议用户尽快升级到安全版本。

Apache Solr 认证绕过漏洞CVE-2024-45216分析报告 漏洞概述 CVE-2024-45216是Apache Solr中存在的一个认证绕过漏洞,影响使用PKIAuthenticationPlugin进行身份验证的Solr实例。攻击者可以通过构造特殊格式的URL路径绕过身份验证检查,从而在未认证的情况下访问受保护的API。 影响版本 5.3.0 <= Apache Solr < 8.11.4 9.0.0 <= Apache Solr < 9.7.0 漏洞原理 核心问题 漏洞存在于PKIAuthenticationPlugin的身份验证逻辑中,具体表现为: 路径验证不严谨 : PKIAuthenticationPlugin.doAuthenticate() 方法使用 requestURI.endsWith(PublicKeyHandler.PATH) 来检查请求路径是否为公开路径( /admin/info/key ) 路径处理不一致 :Solr的路由处理会截取URL中冒号( : )前面的部分作为实际路径,但认证检查时使用的是完整URL 详细分析 认证流程 : 请求首先经过 SolrDispatchFilter.doFilter() 调用 authenticateRequest() 进行身份验证 如果使用PKIAuthenticationPlugin,会检查请求头 SolrAuth 或 SolrAuthV2 对于路径检查,仅简单判断是否以 /admin/info/key 结尾 路由处理 : 在 HttpSolrCall.init() 中,会处理URL路径: 这意味着类似 /solr/admin/info/system:/admin/info/key 的路径会被截取为 /solr/admin/info/system 不一致性 : 认证阶段:检查完整URL是否以 /admin/info/key 结尾 → 通过检查 路由阶段:使用截取后的路径 /solr/admin/info/system → 实际处理的是受保护API 环境搭建 搭建受影响版本的Solr环境 配置身份验证,启用PKIAuthenticationPlugin 调试配置: 漏洞复现 POC 复现步骤 构造包含冒号的URL路径,前半部分为实际要访问的受保护API,后半部分为 /admin/info/key 添加任意值的 SolrAuth 或 SolrAuthV2 请求头 发送请求,观察是否绕过认证访问到受保护API 漏洞修复 官方修复方案: 修改路径检查逻辑,不再仅检查结尾 确保认证检查和路由处理的路径一致性 修复commit: https://github.com/apache/solr/commit/bd61680bfd351f608867739db75c3d70c1900e38 安全建议 升级到安全版本: 升级至Apache Solr 8.11.4或更高版本 或升级至Apache Solr 9.7.0或更高版本 临时缓解措施: 禁用PKIAuthenticationPlugin 配置严格的访问控制规则 总结 CVE-2024-45216漏洞利用Solr在路径处理和认证检查时的不一致性,通过构造特殊格式的URL绕过身份验证。该漏洞影响范围广,利用简单,建议用户尽快升级到安全版本。