Solr/Lucene -绕过安全机制访问敏感数据 - CVE-2017-12629
此信息是否有帮助?
红帽产品安全团队发现了一个会影响到 Apache Solr 和 Lucene 的安全漏洞。这个安全漏洞被记录为 CVE-2017-12629,并于 2017 年 10 月 12 日向公众通告。它的严重性级别被定为 Critical(严重),但是,这个安全漏洞会依赖于两个因素,如果其中任何一个因素没有被暴露,则这个安全漏洞的严重性会降为 Moderate(中度)。多数红帽产品都不会同时存在这两个因素。
背景信息
Apache Solr 是一个基于 Apache Lucene 搜索引擎的、流行的开源搜索平台,它在许多企业级高流量网站和应用程序中使用。
漏洞详情
在 Lucene 中发现了一个实体扩展(XML Entity Expansion,简称 XXE)漏洞。一个攻击者通常可以利用 XXE 这类漏洞绕过安全限制检查并访问敏感数据。对于这里介绍的特定情况,XXE 还向攻击者暴露了一个 Java 类,从而使攻击者可以创建一个带有事件监听的对象,当所监听的事件发生时,就可以运行一段任意代码。当把这两个因素结合在一起时,就可能发生未授权的远程代码执行(Remote Code Execution,简称 RCE)问题。只有在这两个因素都存在的情况下才可能会出现远程代码执行的安全问题,当只存在其中一个因素时,受这个安全问题影响的严重程度将减小。
XXE 问题是通过 Lucene 的 XML 查询解释器中的一个漏洞实现的。这个漏洞允许在查询 XML 文档中包括 doctype 声明以及特殊的对象。当产品不包括或没有向用户暴露 XML 解析功能时,则这个产品不会受这个安全漏洞的影响。
RCE 实现的方法是,通过使用 Solr 的 Config API add-listener 功能创建一个 RunExecutableListener,它可以由一个事件触发。这个监听程序中嵌入的命令可以调用一个 URL、调用一个应用程序,或运行一个脚本。以上行为本身不应该算是一个问题,Config API 是一个不应该暴露给未授权用户的功能,但是,因为存在这个安全漏洞,会使得 XXE 可能造成的潜在安全影响更大。这个 API 只存在于 Solr 中,它没有包括在 Lucene 中。没有使用 Solr 或把 Solr 暴露给用户的产品不会受这个安全漏洞的影响。
影响页包括了受影响的红帽产品
受影响的产品
红帽产品安全团队已将这个问题的安全影响级别定为 Critical(严重)。
以下红帽产品版本会受影响:
- Red Hat Software Collections for Red Hat Enterprise Linux (rh-java-common-lucene)
- Red Hat Software Collections for Red Hat Enterprise Linux (rh-java-common-lucene5)
- Red Hat JBoss Enterprise Application Platform 7 (lucene) **
- Red Hat JBoss Data Grid 7 (lucene)
- Red Hat Enterprise Linux 6 (lucene)
** 请注意:EAP 7 不会直接受到影响,但是在应用程序中可能会包括存在安全漏洞的类。因此,解决这个问题的补丁会在以后提供。
需要采取的行动
我们强烈推荐,所有运行受影响版本的 Solr 和 Lucene 的红帽用户,在相关补丁程序发布时尽快进行更新。在相关补丁还没有发布前,用户可以根据已存在的补救方案对系统进行相关的保护。
受影响产品的更新
产品 | 软件包 | 公告 |
---|---|---|
Red Hat JBoss Data Grid 7 | lucene | RHSA-2017:3244 |
Red Hat JBoss Enterprise Application Platform 7 | lucene | |
Red Hat Software Collections for Red Hat Enterprise Linux | rh-java-common-lucene | RHSA-2017:3451 |
Red Hat Software Collections for Red Hat Enterprise Linux | rh-java-common-lucene5 | RHSA-2017:3452 |
补救方案
在相关的补丁程序发布前,我们建议所有的 Solr 用户使用系统参数 `-Ddisable.configEdit=true` 重启 Solr 实例。这会禁止通过 Config API 对配置进行改变。对配置进行改变是这个安全漏洞的关键,因为它会允许 GET 请求把 RunExecutableListener 添加到配置中。使用这个补救方法可以防止这类安全攻击,但是在相关补丁发布前,用户将无法使用 Config API 的编辑功能。
Comments