Apache Airflow 多个 Provider 存在漏洞

news2024/12/23 8:34:25

项目介绍

Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。 Apache Airflow 是以模块化方式构建的。Apache Airflow 的“核心”提供了核心调度功能,允许您编写一些基本任务,但是通过安装额外的包(称为Provider ),可以扩展 Apache Airflow 的功能。

Provider 可以包含操作器、钩子、传感器和传输操作器,用于与多种外部系统进行通信,同时它们还可以通过扩展 Airflow 核心来添加新的功能。

项目地址

https://github.com/apache/airflow

漏洞概述

此次apache Airflow 爆出多个漏洞,均出自Provider 。其漏洞成因也是类似,Airflow 没有过滤用户使用的数据库连接参数,导致特定条件下具备相关权限的用户可以指定恶意的数据库连接信息从而造成文件读取、命令执行等问题,但是由于这些漏洞利用条件苛刻,攻击者必须具备管理员权限并且需要存在调用相关Provider 的DAG 代码才能触发,因此被视为低风险。

漏洞分析

CVE-2023-35798 Airflow Apache ODBC and MSSQL Providers 任意文件读取漏洞

该漏洞是Airflow Apache ODBC 和MSSQL Providers对用户提交的get_sqlalchemy_connection参数过滤不当造成的,但是由于需要具备修改连接配置权限及调用相关Provider 的DAG 代码才能利用,因此属于低危漏洞。

官方修复方式为过滤了sqlalchemy_scheme参数中的:和/

漏洞影响版本

Apache Airflow ODBC Provider < 4.0.0

Apache Airflow MSSQL Provider< 3.4.1

参考连接

https://github.com/apache/airflow/pull/31984

https://lists.apache.org/thread/951rb9m7wwox5p30tdvcfjxq8j1mp4pj

CVE-2023-22886 Apache Airflow JDBC Provider 命令执行漏洞

该漏洞和上个漏洞类似,Airflow 没有对JDBC Provider的Connection参数进行限制,具备一定权限的攻击者可以造成rce

官方在4.0版本的修复说明中做出了如下说明,简单来说就是限制了直接在connection参数中直接指定driver_path和driver_class

 

在补丁中添加了如下代码,即默认情况下管理员必须在配置文件中设置providers.jdbc参数
allow_driver_path_in_extra为true才可以使用危险功能。

漏洞影响版本

Apache Airflow ODBC Provider< 4.0.0

参考连接

https://github.com/apache/airflow/pull/31849

https://lists.apache.org/thread/ynbjwp4n0vzql0xzhog1gkp1ovncf8j3

CVE-2023-34395 Apache Airflow ODBC Provider 代码执行漏洞

Apache Airflow ODBC Provider由于对参数分隔符过滤不当,导致命令注入漏洞。在OdbcHook中,由于可控的ODBC驱动程序参数允许加载任意动态链接库,从而导致命令执行。由于4.0.0之后版本的驱动程序只能从构造函数中设置。

在新版本的修复说明中指出,新版本不能通过extras指定driver参数

在下面代码实现了具体验证逻辑

 

漏洞影响版本

Apache Airflow ODBC Provider< 4.0.0

参考连接

https://github.com/apache/airflow/pull/31713

https://lists.apache.org/thread/l26yykftzbhc9tgcph8cso88bc2lqwwd

修复方式

官方已发布安全版本 ,建议升级至安全版本或以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

zynq系列器件使用vivado配置国产内存

zynq系列器件使用vivado配置国产内存 一、镁光公司器件命名的含义二、紫光公司器件命名的含义二、国产ddr&#xff08;SCB13H8G162BF-13KI&#xff09;和镁光&#xff08;MT41K512M8-125&#xff09;ddr参数对比三、vivado参数填入 一、镁光公司器件命名的含义 以MT41K512M8-1…

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列2 1 两数之和本题思路代码随想录的代码力扣的示例代码 454 四数相加II本题思路代码随想录的代码力扣的示例代码 15 三数之和本题思路代码随想录的代码力扣的示例代码 18 四数之和代码随想录的代码力扣的示例代码 1 两数之和 给定一个整数数组 nums 和一个整数目标值…

DAY41——动态规划part3

整数拆分 dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 dp[i](i-j)*j或j * dp[i-j]两种可能&#xff0c;前者是拆成两个数的可能性&#xff0c;后者是拆成三个或更多的可能性 对于dp[i] j * dp[i-j] 对每个i遍历j(1->i-1) 事实上是把i拆成j和i-j两…

web安全php基础_搭建php环境

首先打开phpstudy的网站栏点击创建网站&#xff0c;新建一个网站&#xff08;域名随便输反正是局域网&#xff09;然后点击确认 如下&#xff0c;网站便创建好了 打开浏览器输入刚刚创建网站时输入的域名&#xff0c;即可看见我们的网站 然后网站好了&#xff0c;就可以新建项…

IDEA中MyBatiX插件的使用教程

MybatisX插件功能介绍 主要功能如下&#xff1a; 生成mapper xml文件 快速从代码跳转到mapper及从mapper返回代码 mybatis自动补全及语法错误提示 集成mybatis generator gui界面 根据数据库注解&#xff0c;生成swagger model注解 首先下载MybatisX插件 配置数据源 在idea中连…

【C语言】指针和数组笔试题解析

简单不先于复杂&#xff0c;而是在复杂之后。 注&#xff1a;题目会附在前面&#xff0c;大家可以先复制代码自己做一遍&#xff0c;再看答案。 目录 1. 一维数组 2. 字符数组 2.1 sizeof 相关 2.1.1 题一 2.1.2 题二 2.1.3 题三 2.2 strlen 相关 2.2.1 题一 2.2.…

面试之线程池(高级开发 必问)

今天被面试 问麻了。第一个问题是&#xff1a; 一个类有私有的变量&#xff0c;如果修改这个类的私有变量。使用setter方法除外。&#xff08;后来才知道用反射&#xff09; 算了&#xff0c;我还是太水了。回归主题。 线程池的优点: (1):降低资源消耗&#xff0c;通过重读…

UE4/5动画蓝图中Additive Animations讲解

Additive Animation指用当前动画作为Additive动画减去参考位置后得到的Delta量&#xff0c;再通过Apply Additive节点将任意动画输出套用该Delta量&#xff0c;从而达到动画叠加的效果。 官方案例的Additive Animation案例&#xff0c;位于“内容示例/Animation_Basics”场景中…

【Visual Studio】printf() 函数无输出显示问题。使用 C++ 语言,配合 Qt 开发串口通信界面

使用 C 语言&#xff0c;配合 Qt 开发串口通信界面时&#xff0c;遇到 printf() 函数无输出显示。 在工程属性的对应位置添加 editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe 即可&#xff0c;如下图所示。 成功运行的截图如下&#xff1a; Ref. Visual Studio 20…

用uniapp完成一个前端项目

持续更新中… 这里给初学者提供一个uniapp的练习项目&#xff0c;学习uniapp需要vue和微信小程序的基础&#xff08;其实微信小程序基础需要的不多&#xff09;&#xff0c;建议把基础内容学牢固了再看本文。 本项目完成的是H5小程序APP的新闻项目&#xff0c;下面就开始说一下…

kubectl详解之声明式管理方法

目录 一、声明式管理方法二、资源配置清单的管理2.1 查看资源配置清单2.1 修改资源配置清单并应用2.1.1 离线修改2.1.2 在线修改 一、声明式管理方法 适合于对资源的修改操作 声明式资源管理方法依赖于资源配置清单文件对资源进行管理 资源配置清单文件有两种格式&#xff1a;…

Codeforces 879 C.Game with Reversing

博弈&#xff0c;思维&#xff0c;分类讨论 题意&#xff1a; 给你两个字符串&#xff0c;Alice可以每次选一个字符串的任意字母换成任意的字母&#xff0c;Bob可以选择一个字符串进行反转&#xff0c;Alice希望快速结束游戏&#xff0c;Bob希望拖延游戏&#xff0c;问你如果…

【智能座舱系列| 域控制器】 — 智能座舱域控制器技术发展趋势分析

引言 提到座舱域控制器用的主控SoC芯片,大家第一个会想到应该就是高通的SA8155P 。目前,在主机厂新上市的中高端车型中,其座舱的主控SoC芯片多是采用高通的SA8155P, SA8155P为什么会得到众多主机厂的青睐呢?不妨先看一看高通座舱SoC芯片的迭代历程。 高通座舱芯片的迭代历…

Docker 部署 Tomcat 并开放 8082 端口

本文目录 1. 是否安装 Docker2. 拉取 Tomcat 镜像3. 运行 Tomcat 容器4. 验证 Tomcat 容器运行5. 测试 Tomcat 访问6. 开放 8082 端口 1. 是否安装 Docker 可以通过下面的命令来验证是否安装了 Docker&#xff1a; docker --version可以看到&#xff0c;输入该命令后显示了 D…

Cesium.js基础使用(vue)

如何通过Cesium创建一个地图&#xff1a; 1、npm安装(这里使用1.95.0版本) npm i cesium1.95.0 -s 或 yarn add cesium1.95.0 -s 2、组件引入 import * as Cesium from "cesium/Cesium"; 3、容器创建 <div id"cesiumContainer" /> 4、核心类Vi…

创业项目分享 - 想赚大钱得学会偷懒

想创业赚钱&#xff0c;就不能偷懒&#xff0c;得卷死你的同行才行&#xff0c;为何今天话锋突转呢?请放心&#xff0c;这篇不是标题党&#xff0c;而是想要强调&#xff0c;在不同的阶段&#xff0c;对“偷懒”的定义是不一样的&#xff0c;因为不同的阶段&#xff0c;我们的…

ESP32(MicroPython) LCD1602 显示通过Socket通信接收的数据

本程序 实现了通过LCD1602 显示通过Socket通信接收的数据。由于外设驱动有滚动显示的特性并且每次显示要清除之前显示的内容&#xff0c;在显示字符前通过空格和换行清除之前显示的数据&#xff0c;并判断字符串长度&#xff0c;一行显示不下时分两行显示。 代码如下 #导入Pi…

C#对字符串的常用处理总结C#控制台

目录 C#用空格分隔的字符串string转换成字符数组string[]&#xff1b;字符串数组string[]转换成整型数组int[] 1、将用console.readline()获取的用空格分隔的string转换成string[] 2、将string[]转换成int[]&#xff08;c#3.0&#xff09; 截取指定字符串 C#RichTextBox截断…

ModaHub魔搭社区:Milvus 数据迁移工具 – MilvusDM

目录 Milvus 数据迁移工具 — MilvusDM 简介 功能介绍 Faiss to Milvus Milvus 数据迁移工具 — MilvusDM 简介 MilvusDM 是一款针对 Milvus 研发的数据迁移工具&#xff0c;支持 Milvus 数据传输以及数据文件的导入与导出&#xff1a; Faiss to Milvus&#xff1a;将未…