漏洞深度分析|Apache Airflow example_bash_operator DAG 远程代码执行漏洞

news2024/9/22 13:28:05

项目介绍

Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。

项目地址

https://github.com/apache/airflow

漏洞概述

Apache Airflow的默认DAG example_bash_operator 参数使用不当,具备后台权限的攻击者可以通过run_id注入恶意命令从而造成rce。

影响版本

Apache Airflow < 2.4.0

漏洞复现

构造特殊run_id,反弹shell成功

 

 

漏洞分析

根据官方发布的修复补丁可知,修复前是直接获取了run_id 值并拼接到了bash_command中。

 

run_id是什么呢?原来每个DAG 实例都有一个上下文的概念,以context参数的形式会透传给所有的任务,以及所有任务的回调函数。run_id也在context中,其含义是DAG运行实例id

 

在触发dag执行的时候,可以指定run_id的值

 

因此只要具备触发DAG执行的权限就可以注入恶意命令。

注入恶意命令后,如何执行呢?参考官方文档可知,BashOperator作用是在shell中执行命令,airflow使用 Jinja templates为dag传递变量并且不会对传入数据进行转义处理

 

因此,在2.4.0之前版本,当example_bash_operator存在时,具备执行权限的攻击者可以通过run_id注入恶意代码从而执行系统命令。

修复方式

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

参考连接

airflow—给DAG实例传递参数(4) - 腾讯云开发者社区-腾讯云

Change the template to use human readable task_instance description by potiuk · Pull Request #25960 · apache/airflow · GitHub

https://airflow.apache.org/docs/apache-airflow/stable/howto/operator/bash.html#bashoperator

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

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

相关文章

Vue实现搜索关键字标红高亮加粗

博主介绍 &#x1f4e2;点击下列内容可跳转对应的界面&#xff0c;查看更多精彩内容&#xff01; &#x1f34e;主页&#xff1a;水香木鱼 &#x1f34d;专栏&#xff1a;后台管理系统 文章目录 简介&#xff1a;这是一篇有关【Vue实现搜索关键字标红高亮加粗】的文章&#xf…

光流法draw_flow()函数报错

光流法draw_flow()函数报错 1 import cv22 from scipy import *3 4 5 def draw_flow(im, flow, step16):6 """ Plot optical flow at sample points7 spaced step pixels apart. """8 h, w im.shape[:2]9 y, x mgrid[step / 2…

苹果电脑pd工具箱Parallels Toolbox中文

ParallelsToolbox中文版是一款体积小巧、功能齐全的电脑系统工具箱&#xff0c;Parallels Toolbox将所有的功能均非常直观的展现出来了&#xff0c;在这里可以轻松实现驱动器清理、视频转换、桌面隐藏、锁定屏幕、音频录制等一系列操作。 专为创意人士、学生、小企业主、长期多…

这些基本语法规则你还不知道?那你的Python还没入门...

官方对Python的介绍如下&#xff1a;Python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构&#xff0c;能够简单又有效地实现面向对象编程。 Python有着非广泛的应用&#xff0c;几乎所有大中型互联网公司都在使用Python&#xff0c;例如国外的Google、Youtube、…

AutoDL算力租用,Mobaxterm+Pycharm+VScode通过SSH连接远程服务器AutoDL

上干货&#xff1a; 一 、AutoDL算力租用平台使用 https://www.autodl.com/register?codef8e175e4-67c3-4cca-b120-09b11caaf2e6 第一步先注册&#xff0c;新注册的有免费十块代金劵&#xff0c;提供免费体验一下&#xff0c;本想白嫖&#xff0c;一体验&#xff0c;直接上车…

重塑感知,荣耀金洋!金洋奖两项用户体验奖项公布

11月17日&#xff0c;银行APP用户体验外滩峰会圆满落幕。其间&#xff0c;金洋奖用户体验APP Top20、金洋奖适老化及无障碍体验APP Top10两项用户体验类奖项重磅颁出&#xff0c;聚焦用户体验&#xff0c;发现和挖掘业内用户体验优秀实践案例&#xff0c;助力行业提升APP用户体…

已有项目与git建立连接、老项目搭建git管理

最近接手了一个已经上线很久的项目&#xff0c;原来都是ftp进行修改&#xff0c;所以谁改的改了什么都没有记录&#xff0c;决定给这个项目加上git。 首先由于项目在线上服务器我没有直接在线上进行git远程库的上传&#xff0c;所以ftp把整个项目都拉到本地之后进行的操作。 一…

prometheus安装和oracle告警配置

一、安装Prometheus 通过git下载新版本promethus mv prometheus-2.40.1.linux-amd64.tar.gz /usr/local/ cd /usr/local tar zxvf prometheus-2.40.1.linux-amd64.tar.gz cd /usr/local/prometheus-2.40.1.linux-amd64 vim prometheus.yml global:scrape_interval: 15s # S…

BDD - SpecFlow Driver Pattern 驱动模式

BDD - SpecFlow Driver Pattern 驱动模式引言Driver Pattern 的优势举例不用 Driver Pattern运用 Driver Pattern引言 前面 《 BDD - SpecFlow Page Object Model POM 》介绍了 POM 模式&#xff0c;用于提取 Web UI 元素封装成 Page Object 类&#xff0c;今天介绍另外一种 D…

电子统计台账:处理时间与名称所在行有交错的流水账格式

目录 1 新建项目 2 水平过滤模板 3 垂直过滤模板是重点 实际工作中&#xff0c;各种千奇百怪的事情都能遇上。本来普通格式的流水账可以处理了还挺高兴&#xff0c;一下子又来了这样的数据格式&#xff0c;居然名称前面根本没有日期这样的流水账&#xff1a; 这种情况还是需…

【LeetCode每日一题】——462.最小操作次数使数组元素相等 II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 排序 二【题目难度】 中等 三【题目编号】 462.最小操作次数使数组元素相等 II 四【题目描述】…

2022NUSTCTF--web

ezProtocol web基础 POST / HTTP/1.1 Host: 43.143.7.97:28520 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Acc…

Linux信号

目录注意信号概念用kill -l命令可以查看系统定义的信号列表信号处理常见方式概览产生信号1. 通过终端按键产生信号Core Dump2. 调用系统函数向进程发信号3. 由软件条件产生信号4. 硬件异常产生信号信号捕捉模拟一下野指针异常总结阻塞信号1. 信号其他相关常见概念2. 在内核中的…

Jest单测实践篇

快照测试 快照测试在你要确保你的UI没有发生改变的时候非常有用。jest的快照测试为文本测试&#xff0c;第一次执行时存储本次的快照&#xff0c;然后在之后的测试过程中进行文本比对。 toMatchSnapshot() 方法 import React from react; import Link from ../Link.react; i…

Python编程 列表的常用方法

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.字符串(str) 1.字符串常见操作(熟悉) 2.L.append(object) 3.L.exten…

前端开发环境搭建

1.安装git 去官网下载git安装包https://gitforwindows.org/ 2.配置ssh公钥这样再操作git 的时候就不用输入密码了 1、鼠标右键&#xff0c;点击 ‘git bash here’ 2、配置一下name 、eamil git config --global user.name 用户名 git config --global user.email 邮箱 3…

Spring 6面向切面编程aop详解

面向切面编程十五、面向切面编程AOP15.1 AOP介绍15.2 AOP的七大术语15.3 切点表达式15.4 使用Spring的AOP15.4.1 准备工作15.4.2 基于AspectJ的AOP注解式开发实现步骤通知类型切面的先后顺序优化使用切点表达式全注解式开发AOP15.4.3 基于XML配置方式的AOP&#xff08;了解&…

Windows 10下部署Java环境——jdk1.8.0_301版本

文章目录JDK安装JDK的环境配置验证JDK配置成功JDK安装 JDK1.8.0_301版本资源&#xff1a;https://download.csdn.net/download/qq_43408367/87061076?spm1001.2014.3001.5503 安装步骤参考&#xff1a;Windows 10下部署Java环境——JDK 11.0.2版本 JDK的环境配置 “我的电…

配置静态ip,主机名,centos安装jdk,hadoop等

切换到root用户操作 su root配置ip地址和ip地址的配置&#xff0c;网关&#xff0c;域名解析 vim /etc/sysconfig/network-scripts/ifcfg-ens33linux⾥的bootproto的none,static,dhcp有什么区别这个是⽹络配置参数&#xff1a; BOOTPROTOstatic 静态IP BOOTPROTOdhcp 动态IP…

消息队列 RocketMQ 5.0:从消息服务到云原生事件流平台

前言 回顾 RocketMQ 的发展历程&#xff0c;至今已十年有余。2022 年 RocketMQ 5.0 正式发布&#xff0c;全面迈进云原生时代。 11 月 5 日&#xff0c;2022 杭州 云栖大会上&#xff0c;阿里云智能高级产品专家杨秋弟在云原生峰会上发表主题演讲&#xff0c;发布消息队列 R…