CVE-2026-35171Kedro是一个用于生产就绪数据科学的工具箱。在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初始化日志系统时,将自动实例化这些对象并执行命令。由于无需用户交互且通过网络向量利用,攻击者若能控制环境变量,即可在服务器上执行任意代码,获得系统控制权。