CVE-2025-12638 - Keras团队/keras中通过tar归档提取在keras.utils.get_file()中的路径穿越漏洞
概述
CVE-2025-12638是Keras深度学习框架中的一个安全漏洞,CVSS 3.0评分为8.0(高危级别)。
漏洞描述
Keras 3.11.3版本在keras.utils.get_file()函数提取tar归档文件时存在路径穿越漏洞。该漏洞的产生原因是函数使用了Python的tarfile.extractall()方法,但未设置关键的安全参数filter='data'。
尽管Keras尝试使用filter_safe_paths()函数过滤不安全路径,但这一过滤发生在提取操作之前。在提取过程中,PATH_MAX符号链接解析错误会被触发。由于路径长度限制导致符号链接解析失败,从而形成安全绕过,允许文件被写入预期的提取目录之外。
这可能导致任意文件被写入缓存目录之外,进而可能造成系统被入侵或恶意代码执行。该漏洞影响处理tar归档文件的Keras安装,不影响已使用适当filter参数保护此提取方法的版本。
漏洞时间线
- 发布日期:2025年11月28日 15:16
- 最后修改:2025年11月28日 15:16
- 远程可利用:是
- 来源:security@huntr.dev
受影响产品
目前尚未记录受影响的具体产品。
CVSS评分
| 评分 | 版本 | 严重性 | 向量 | 可利用性评分 | 影响评分 | 来源 |
|---|---|---|---|---|---|---|
| 8.0 | CVSS 3.0 | 高危 | 2.1 | 5.9 | security@huntr.dev |
解决方案
- 更新Keras到能正确过滤tar归档文件提取的版本
- 使用带有
filter="data"参数的tarfile.extractall()方法 - 确保路径过滤发生在提取操作之前
- 应用可用的Keras安全补丁
相关参考资料
CWE - 通用弱点枚举
CWE-22:对路径名的限制不当导致受限目录被访问(‘路径穿越’)
通用攻击模式枚举与分类(CAPEC)
- CAPEC-64:组合使用斜杠和URL编码绕过验证逻辑
- CAPEC-76:操纵Web输入到文件系统调用
- CAPEC-78:在替代编码中使用转义斜杠
- CAPEC-79:在替代编码中使用斜杠
- CAPEC-126:路径穿越
GitHub概念验证
结果限制在前15个存储库,以避免潜在的性能问题。
相关新闻
结果限制在前20篇新闻文章,以避免潜在的性能问题。
漏洞历史记录
| 日期 | 动作 | 类型 | 旧值 | 新值 |
|---|---|---|---|---|
| 2025年11月28日 | 添加 | 描述 | 空 | Keras版本3.11.3在keras.utils.get_file()函数提取tar归档文件时存在路径穿越漏洞… |
| 2025年11月28日 | 添加 | CVSS V3 | 空 | AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H |
| 2025年11月28日 | 添加 | CWE | 空 | CWE-22 |
| 2025年11月28日 | 添加 | 参考链接 | 空 | https://huntr.com/bounties/f94f5beb-54d8-4e6a-8bac-86d9aee103f4 |
漏洞评分详情
CVSS 3.0基础评分:8.0
| 攻击向量 | 攻击复杂度 | 所需权限 | 用户交互 | 范围 | 机密性影响 | 完整性影响 | 可用性影响 |
|---|---|---|---|---|---|---|---|
| 网络 | 低 | 低 | 需要 | 未改变 | 高 | 高 | 高 |