近日,Apache Solr修复了ConfigSet API上传功能中的一个漏洞 (CVE-2020-13957)。攻击者可能通过组合使用其 UPLOAD/CREATE 功能来进行未授权操作,最终可能导致命令执行。
Apache Solr 是一个是基于 Lucene 的企业级搜索应用服务器。
漏洞概述
用户在SolrCloud模式下运行Solr时,可借助Configsets API创建、删除和以其他方式管理ConfigSets。
当通过ConfigSets API 执行UPLOAD操作上传 ConfigSet 时,如果开启了身份验证,并且该上传请求已经过了验证,则会以“trusted”模式上传ConfigSet。不启用身份验证时,ConfigSet则以“untrusted”模式上传。
但另一方面,使用ConfigSets API 执行CREATE 操作时,会基于一个已经上传的ConfigSets创建一个新的ConfigSets,这个新的 ConfigSets 的 trusted 标志未被设置,当没有设置该标志时,ConfigSets其实是被当作“trusted”了。
由此,当上传未开启验证时,如果修改ConfigSets 配置文件里的敏感参数,再结合CREATE创建新的 ConfigSet。最终新 ConfigSet 创建的 collection 可能造成命令执行。
参考链接:
https://issues.apache.org/jira/browse/SOLR-14925
受影响产品版本
- Apache Solr 6.6.0 – 6.6.5
- Apache Solr 7.0.0 – 7.7.3
- Apache Solr 8.0.0 – 8.6.2
不受影响产品版本
- Apache Solr version >= 8.6.3
解决方案
官方已提供修复了漏洞的新版本 8.6.3,可以从以下链接下载:
https://lucene.apache.org/solr/downloads.html
缓解措施(以下任一方法都足以防御此漏洞):
1. 如果未使用ConfigSets API UPLOAD 操作,可将其禁用:
通过运行时参数禁用 -Dconfigset.upload.enabled=false。详情参考:
https://lucene.apache.org/solr/guide/8_6/configsets-api.html
2. 开启身份验证/授权,详情参考:
https://lucene.apache.org/solr/guide/8_6/authentication-and-authorization-plugins.html
3. 如果不便升级,可以考虑使用补丁 SOLR-14663
https://issues.apache.org/jira/browse/SOLR-14663
4. 配置防火墙,确保Solr API(包括Admin UI)只有受信任IP和用户才能访问。