CVE-2019-7238: Sonatype Nexus Repository Manager 3远程代码执行漏洞
导语:腾讯安全云鼎实验室和长亭科技安全研究员发现Sonatype Nexus Repository Manager 3存在远程代码执行漏洞CVE-2019-7238。
近日,研究人员发现了通用软件包仓库管理服务Nexus Repository Manager 3存在访问控制缺失及远程代码执行漏洞,漏洞编号为CVE-2019-7238。
研究人员在Sonatype Nexus Repository Manager (NXRM) 3中发现一个远程代码执行漏洞。Sonatype Nexus Repository Manager (NXRM) 3是一个允许开发者管理软件开发、应用实现、自动硬件提供所必须的软件组件的开源项目。漏洞影响的NXRM 3目前安装量已经超过15万,该漏洞是腾讯安全云鼎实验室安全研究员Rico和长亭科技安全研究员voidfyoo发现的。
研究人员通过分析发现利用该安全漏洞并不需要认证。因此攻击者很容易就开源发送伪造的请求到宿主服务器或在服务器上执行任意代码或程序。Sonatype已经修复了该漏洞。
缺乏适当的访问控制
CVE-2019-7238是一类表达式注入漏洞,具体是位于previewAssets函数的 CSEL (Content Selector Expression Language)表达式没有进行适当的处理。CSEL是JEXL(Java Expression Language)的轻量版本,用来进行特定路径和脚本查询。
研究人员分析发现, previewAssets()将有漏洞的参数作为previewAssets请求的表达式特征的值。随后,该函数会调用checkJexlExpression()方法,然后在没有处理提供的表达式值的情况下在ContentExpressionFunction.java中执行execute()方法。这最终导致了任意代码执行。
previewAssets请求的样本如图1所示,其中method被设定为previewAssets, property被设定为expression,value值中含有恶意代码(下图高亮显示)。当发送给NXRM 3时,因为没有进行适当的访问控制处理就会导致远程代码执行。
图1. previewAssets JSON请求
漏洞利用和补丁
要利用以下漏洞,需要满足以下条件:
· NXRM 3服务器版本低于3.15
· 在NXRM 3的任意仓库中至少存在一个文件,如图2所示
图2. NXRM 3中现有的仓库
在满足以上条件的情况下,攻击者可以利用该漏洞来获取远程主机的控制权。
图3.在远程主机上执行逆向shell
要修复该漏洞,需要增加权限请求。图4中更新的代码显示的就是在previewAssets()函数调用前对NXRM 3导入的注册表进行权限检查。该过程使用了Java类文件org.apache.shiro.authz.annotation.RequiresPermissions的@RequiresPermissions(‘nexus:selectors:*’)接口。
图4. CVE-2019-7238补丁
建议
NXRM 3这样的仓库管理器是软件开发者用来增强速度和效率的工具。像CVE-2019-7238这样的漏洞会使用这类工具有潜在被滥用的可能性。这也说明了对软件开发过程进行持续性监控的重要性,包括识别可能存在的漏洞和将最新的威胁情报应用到恶意软件开发中。
发表评论