手把手复现 Apache Airflow 漏洞指南-(CVE-2022-40604)

admin 2025年7月4日01:41:53评论31 views字数 1301阅读4分20秒阅读模式
 

手把手复现 Apache Airflow 漏洞指南-(CVE-2022-40604)

漏洞介绍

Apache Airflow 是一个用于编排复杂工作流的开放源代码平台,广泛用于数据管道和任务调度。

CVE-2022–40604 漏洞源于 src/airflow/utils/log/file_task_handler.py 中日志 URL 构建中的字符串格式化不当。

具体来说, log_relative_path 变量包含了用户控制的 run_id ,不安全地传递给了 .format() 调用,使攻击者能够注入恶意格式字符串并提取敏感配置数据。

为什么格式化字符串很重要

格式化字符串漏洞发生在用户输入未经适当清理就直接被包含在字符串格式化函数中(例如 Python 的 .format() 或 C 的 printf )。

在 Airflow 的情况下,攻击者可以通过 run_id 参数控制 log_relative_path 的部分内容,从而允许他们构建格式化字符串 {ti.task.__class__.__init__.__globals__[conf].__dict__} 来访问内部配置对象。

测试环境搭建

Docker 搭建

docker run -p 8080:8080 apache/airflow:2.3.4

pip 安装方式

pip install apache-airflow==2.3.4  airflow db init  airflow webserver -p 8080

漏洞复现

该漏洞存在于 Airflow 任务处理器的日志机制中。 file_task_handler.py 中的恶意代码为:

url = os.path.join("http://{ti.hostname}:{worker_log_server_port}/log", log_relative_path).format(  ti=ti, worker_log_server_port=conf.get('logging', 'WORKER_LOG_SERVER_PORT')  )

这里的 log_relative_path 包含了用户控制的 run_id ,从而受到格式字符串注入攻击。

复现过程

  1. 访问 DAGs 菜单:
    • 登录 Airflow 的 Web 界面,例如 :http://localhost:8080
    • 导航至 DAGs 并选择一个 DAG(例如: example_xcom )
  2. 查看日志 URL:
    • 触发一个 DAG,查看日志(Log)选项卡中的任务
    • 捕获 /get_logs_with_metadata 的请求
    • 示例 URL:
/get_logs_with_metadata?dag_id=example_xcom&task_id=push_by_returning&map_index=-1&execution_date=2022-08-29T13:25:11+00:00&try_number=1&metadata=null
  1. 识别用户控制输入:
    • 触发 DAG 时设置的 run_id 参数会影响 log_relative_path
    • 测试 run_id 是否可以操纵格式化的 URL

漏洞利用

原文始发于微信公众号(骨哥说事):【星球专享】手把手复现 Apache Airflow 漏洞指南-(CVE-2022–40604)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月4日01:41:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   手把手复现 Apache Airflow 漏洞指南-(CVE-2022-40604)https://cn-sec.com/archives/4219688.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息