近日,安全研究人员披露,Python 生态中一款历史悠久的解析库 PLY 存在一处严重安全漏洞,可导致远程代码执行。该漏洞编号为 CVE-2025-56005,CVSS 严重性评分高达 9.8,属于高危漏洞。值得关注的是,该漏洞被发现之际,项目维护者已正式宣布停止对 PLY 项目的维护,使相关风险进一步放大。
PLY 是对传统解析工具 lex 和 yacc 的 Python 实现,具有零依赖特性,长期被用于复杂语言和语法解析,在 Python 社区已有约 25 年的使用历史。尽管该库仍可在现代 Python 环境中运行,但其早期设计理念已难以满足当前安全要求。
安全研究人员 Bohmiiidd 在分析过程中发现,PLY 的 yacc() 函数中存在一个未在任何官方文档或 GitHub 仓库中说明的隐藏参数 picklefile。该参数在 PyPI 发布版本中实际生效,但并未向开发者公开说明。
研究显示,picklefile 参数在被启用时,会调用 Python 标准库中的 pickle.load() 方法,对指定文件进行反序列化处理,且未对输入数据进行任何安全校验。
在 Python 安全领域,pickle 模块因支持在反序列化过程中执行任意代码(例如通过 __reduce__() 方法),被普遍认为不适合处理不可信数据。
研究报告指出,如果攻击者能够控制传入的 pickle 文件内容,即可在解析器初始化阶段执行任意代码,从而实现对目标系统的控制。
Bohmiiidd 提供的概念验证显示,攻击者可通过构造恶意 pickle 载荷,在调用 yacc() 函数时直接执行系统命令,例如创建文件,甚至进一步接管服务器。
PLY 项目创建者 David Beazley 近日公开表示,在持续维护 25 年后,已决定正式放弃该项目,后续不再提供功能更新或安全修复。他同时建议开发者考虑迁移至其他成熟且持续维护的解析库。在项目停止维护的背景下,上述高危漏洞暂无官方补丁,相关风险需由使用方自行应对。
针对仍在使用 PLY 的开发者和组织,安全研究人员给出的建议明确而直接:
由于该参数未被官方文档记录,绝大多数开发者并不会主动使用,但其潜在风险仍需引起高度重视,尤其是在涉及用户输入或自动化解析场景的系统中。
来源:https://securityonline.info/ghost-in-the-code-critical-rce-found-in-abandoned-python-ply-library-cvss-9-8/