Apache的德鲁伊是一个开源的, 这是专为摄入大量的数据,以提供即时数据可视性,即席分析和查询与低延迟和高并发分布式数据存储库。企业通常使用Druid来分析实时或历史数据。它可以作为公共云,私有云或混合云的一部分进行部署。
最近在Apache Druid中报告了一个代码执行漏洞,该漏洞使未经身份验证的远程用户可以使用druid服务器进程的特权执行任意javascript代码。此漏洞已分配为CVE-2021-25646。可以在NVD上找到有关CVE-2021-25646和各种受影响版本的更多详细信息 。
在此博客中,让我们仔细研究此漏洞的工作原理。
漏洞详情
在我们的实验室中,我们在Ubuntu服务器上运行了Druid版本0.20.0。Druid可以从多个来源(例如Apache Kafka,Amazon S3和Hadoop等)中获取数据。它还允许从本地磁盘导入数据,并且用户可以在构建数据存储时插入自己的数据。
德鲁伊数据提取选项
要输入 您自己的数据,请选择“ Source type ”作为“ inline ”, 然后简单地以JSON 格式输入一些示例数据, 如下所示:
{“isRobot”:true,”channel”:”#itsme”,”timestamp”:”2021-2-22T14:12:24.050Z”,”flags”:”sample”,”isUnpatrolled”:false,”page”:”1″,”diffUrl”:”https://google.com”,”added”:1,”comment”:”I am sample data”,”commentLength”:16,”isNew”:true,”isMinor”:false,”delta”:31,”isAnonymous”:true,”user”:”Lsjbot”, “deltaBucket”:0,”deleted”:0,”namespace”:”Main”}
样本JSON数据
以下是API请求查找此步骤的方式:
采样器API
对于其他选项,您可以参考此Druid快速入门指南,该 指南提供了入门的简单步骤。
数据提取完成后,Druid UI如下所示:
数据加载
“ sampler ” API还为经过身份验证的用户提供了执行用户定义的JavaScript代码以执行某些过滤和转换操作的能力。但是,此功能仅应在高信任度的环境中使用,并且默认情况下处于禁用状态。
易受攻击的Apache Druid版本中存在一个 命令注入漏洞。即使禁用了此功能,远程未经身份验证的用户也可以使用执行的嵌入式JavaScript代码创建特制请求。结果,它可能导致命令注入和远程代码执行。
之所以会发生这种情况,是因为易受攻击的Druid版本无法 使用空 键来验证异常的 JSON请求主体 。这将覆盖默认配置,并允许恶意用户执行任意代码。
而解决这个问题,德鲁伊开发商都提到了这个漏洞是一个的结果 存在错误在 杰克逊解串器,一个Java库,有助于将JSON字符串转换为Java对象。
修复CVE-2021-25646
远程执行代码
在此漏洞中,由于可以执行任何JavaScript代码,因此测试了以下情形:
-
使用nc之类的工具在攻击者的计算机 上打开一个随机侦听器端口。
-
在攻击者的计算机上,发送 特制的“ sampler ” API请求,其中包含包含恶意JavaScript代码的JSON数据,并使用Shell将其连接回上述 端口 。
-
结果,将创建具有Druid用户特权级别的反向Shell。
在攻击者上打开端口:
与nc打开端口
使用curl在“ sampler ” API中 发送JSON正文:
恶意JSON正文
通过curl发送
在侦听器端口上实现反向Shell功能:
反壳
这是恶意API请求的样子:
恶意采样器API
补救和结论
拥有IDP许可证的Juniper Networks的 NGFW SRX客户可以使用以下签名来防止此漏洞:
HTTP:APACHE:DRUID-CMD-INJ
此签名于 2021年2月23日发布,导出 号为3358 ,是推荐模板的一部分。
同时,受 供应商建议,受 CVE-2021-25646影响的用户 应将Apache Druid升级到最新的稳定版本 。
本文始发于微信公众号(Ots安全):CVE-2021-25646:Apache Druid嵌入式Javascript远程执行代码
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论