安全研究人员发现,Netflix、Reddit使用的NoSQL数据库Apache Cassandra存在远程程序代码执行(remote code execution,RCE)漏洞。
Cassandra是一个分布式NoSQL数据库,由于其高扩展性及分散的特性,用户涵盖许多知名企业,包括Netflix、Twitter、Reddit、思科、OpenX、Digg等。它被大量运用在DevOps及云计算原生开发项目,像是Jaeger等CNCF(Cloud Native Computing Foundation)项目,一些云计算服务如无服务器多云DBaaS企业DataStax更是直接创建在Cassandra之上。
安全厂商JFrog安全研究人员说明,Cassandra提供用户定义功能(user-defined function,UDF)组态,让开发人员在其数据库内执行特定资料运算,他们可以Java或JavaScript撰写设置UDF。使用JavaScript时,Cassandra会在JavaRuntime Environment(JRE)使用Nashron引擎。为确安全全,Cassandra的设计是必须在一个沙箱中执行Nashron JavaScript。Cassandra团队也设计了白名单及黑名单过滤,以及安全管理员程序默认不允许执行来防止恶意程序执行。
JFrog研究团队发现,编号CVE-2021-44521的漏洞存在Casasandra沙箱其中一个非默认组态“enable_user_defined_functions_threads”,只要将其参数值改成true就能允许所有用户创建并执行任意UDF,包括匿名登录的用户。此外也可以从Config.java组态档变更组态。通过变更该组态及执行UDF,研究人员利用Nashorn引擎、绕过沙箱防护,而成功执行RCE攻击,另外也可以对系统引发拒绝服务(Denial of Service,DoS)攻击。
研究人员指出,CVE-2021-44521的漏洞开采容易,所幸该漏洞发生在非默认配置下,因而降低危险性,但其实也有不少用户启动了该设置而暴露在攻击风险中。本漏洞CVSS 3.1风险值达8.4。
该漏洞影响Cassandra 3.0.x、3.11.x、4.0.x版,在经过通报后,Cassandra团队已分别发布3.0.26、3.11.12及4.0.2解决漏洞。安全厂商呼吁用户应尽快更新到最新版本。