CVE-2025-61677CVE-2025-61677是DataChain(一个基于Python的AI数据仓库,用于转换和分析非结构化数据)中的一个不安全反序列化漏洞。该漏洞存在于DataChain 0.34.1及以下版本中,源于loader.py模块在读取环境变量(如DATACHAIN__METASTORE和DATACHAIN__WAREHOUSE)时,未对反序列化的数据进行充分的验证和过滤。攻击者如果能够控制这些环境变量的值,就可以在应用程序加载时触发任意代码执行。该漏洞由GitHub安全顾问团队([email protected])发现并报告,已在DataChain 0.34.2版本中修复。根据CVSS 3.1评分标准,该漏洞评分为2.5分,属于低危级别。评分较低的原因是攻击需要本地访问权限(AV:L)、高复杂度(AC:H)以及低权限要求(PR:L),但其本质是一个可导致代码执行的高危安全问题。DataChain作为AI/ML数据处理工具,被广泛用于大规模数据集的转换、版本化和分析,因此该漏洞对依赖该库进行数据科学工作流的企业和开发者构成潜在威胁。
该漏洞的核心问题在于DataChain的loader.py模块在初始化配置时,会从环境变量中读取序列化的对象数据。具体而言,DATACHAIN__METASTORE和DATACHAIN__WAREHOUSE等环境变量被用于配置DataChain的元数据存储和数据仓库连接。然而,DataChain在解析这些环境变量时使用了不安全的反序列化方式(如pickle),使得攻击者可以通过精心构造的序列化payload实现任意代码执行。
利用方式如下:
1. 攻击者首先需要在目标系统上获得环境变量的写入权限(PR:L表示需要低权限);
2. 攻击者构造恶意的pickle序列化payload,其中包含要执行的系统命令;
3. 攻击者将该payload编码后设置到DATACHAIN__METASTORE或DATACHAIN__WAREHOUSE环境变量中;
4. 当DataChain应用程序启动或重新加载配置时,loader.py模块会自动从环境变量读取并反序列化该数据;
5. 反序列化过程中,恶意payload中的代码被自动执行,攻击者获得代码执行权限。
该漏洞的修复通过commit 914b9561实现,主要措施是禁止从环境变量反序列化不安全的数据类型,改用安全的配置解析方式(如JSON或YAML),并对反序列化的对象进行类型验证。