Apache Cassandra是一个应用广泛的开源分布式NoSQL数据库管理系统,用于跨商用服务器管理大量结构化数据。该漏洞体现在Cassandra的非默认配置中,由于Cassandra提供了创建用户定义函数(UDF)的功能,允许用户对数据库中的数据执行自定义处理。管理员可以使用Java和JavaScript来编写UDF。
在JavaScript中,它使用了Java运行时环境(JRE)中的Nashorn 引擎;接受不可信赖的代码时,就无法保证该引擎的安全。JFrog的研究人员发现,用户定义函数(UDF)的配置被启用后,恶意人员就可以利用Nashorn 引擎逃逸沙箱,并远程执行代码。
目前,Cassandra的开发团队已针对UDF执行实施了一个自定义沙箱,该沙箱使用两种机制来限制UDF代码。研究发现,当cassandra.yaml配置文件含有以下定义时,就有可能被利用:
- enable_user_defined_functions:true
- enable_scripted_user_defined_functions:true
- enable_user_defined_functions_threads:false
研究人员表示:“当[enable_user_defined_functions_threads]选项设置为false时,所有调用的UDF函数都在Cassandra守护程序线程中运行,该线程具有某些权限的安全管理器,从而允许对手禁用安全管理器并打破沙箱及在服务器上运行任意shell命令。”
据了解,Apache已经发布了版本3.0.26、3.11.12和4.0.2来应对该漏洞,新版本中添加了一个新标志“allow_extra_insecure_udfs”(默认设置为false),可以防止关闭安全管理器,并且禁止对java.lang.System进行访问。企业组织需要尽快进行版本升级,避免漏洞造成更大危害。
参考链接:
https://securityaffairs.co/wordpress/128079/breaking-news/apache-cassandra-rce.html