创建网站首页时通常取文件名为,网络运营团队,wordpress 主题 设计,武威建设局网站项目介绍
Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…
项目介绍
Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践我们将任务部署和运行时参数提取到配置文件中。这样带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它降低了学习成本和开发障碍因此开发人员可以专注于业务逻辑。另一方面如果在部署阶段没有专业的Flink Spark任务管理平台企业使用Flink Spark也是一个挑战。StreamPark提供了这样一个专业的任务管理平台包括任务开发、调度、交互式查询、部署、运行。
项目地址
https://github.com/apache/incubator-streampark.githttps://streampark.apache.org/ 漏洞概述
在streampark中项目模块集成了Maven的编译功能。但是没有检查Maven的编译参数。允许攻击者插入命令进行远程命令执行。 影响版本
2.0.0 before 2.1.2 漏洞分析
该项目最重要的功能就是对stream和flink的快速部署开发允许用户新建 project 并使用maven编译运行。而且允许自定义Maven settings.xml的路径。 通过分析源码可知该项目对于构建 project 是使用命令拼接方式。 上图中的方法主要作用是生成 mvn 命令它可以处理 Maven 未安装、Maven Wrapper 存在但无法打开等情况。这个命令用于清理项目、打包项目并跳过测试。 最重要的是如果有额外的构建参数或者指定了 Maven 的 settings 文件它会添加并执行这些参数。方法会添加 --settings 参数和 settings 文件的路径。 那么我们需要重点关注的判断如下 这个方法的主要作用是获取配置项的值。它首先从 confData 中获取如果没有就从系统属性中获取如果还没有就返回默认值。 下面这个 InternalOption 对象的主要作用是定义了一个配置项用来表示 Maven 的 settings.xml 文件的完整路径。在获取配置项的值时如果配置数据中没有这个配置项的值将会使用默认值 null。 通过上面的函数分析可以发现项目对用户传入的 setting.xml 的路径并未进行效验且会直接拼接到 cmdBuffer 来当做命令执行。 随后当用户编译运行项目是会直接调用 projectBuild 函数projectBuild方法并不会进行校验直接调用 CommandUtils.execute() 上面的代码定义了一个名为 CommandUtils 的对象它提供了两个方法用于执行命令行命令
execute(command: String): (Int, String)
execute(directory: String, commands: JavaIterable[String], consumer: Consumer[String]): Int
execute(command: String): (Int, String) 方法接受一个字符串类型的命令执行这个命令并返回一个元组 execute(directory: String, commands: JavaIterable[String], consumer: Consumer[String]): Int 方法接受一个目录、一个命令列表和一个Consumer。它在指定的目录下执行命令列表中的命令并使用Consumer处理命令的输出(实际为fileLogger.info) 最后会调用 waitFor 函数来等待上面执行命令的进程结束返回进程的退出码。在进程结束后它关闭进程的错误流、输入流和输出流并销毁进程。 两个execute分别用到了 Runtime.getRuntime.exec 和 ProcessBuilder.start这两个是Java安全中常见的用于命令执行的敏感函数虽然execute 方法。虽然它处理了命令的输出和错误并且做到即使接触进程但是通过持久化可以完成规避实现远程命令执行。 通过上述分析利用步骤很清晰了。攻击者需要在 mvn settings.xml 路径插入恶意代码随后直接执行任意项目的编译命令或者等待开发者自己执行正常的项目编译命令即可。 漏洞分析
升级到最新版本2.1.2 之后。
参考链接
https://streampark.incubator.apache.orghttps://www.cve.org/CVERecord?idCVE-2023-49898