CVE-2025-56005
CriticalCVSS 9.8Exploitation Probability (EPSS)
Very high risk97th percentile - higher than 97% of all known CVEs
Summary
The PLY (Python Lex-Yacc) library version 3.11 contains an undocumented and unsafe feature in the `picklefile` parameter of the `yacc()` function, allowing Remote Code Execution (RCE) via deserialization of a malicious `.pkl` file without validation. An attacker can exploit this to execute arbitrary code, posing a stealthy backdoor and persistence risk.
Risk Assessment
The risk for the organization includes potential remote takeover of the system, leading to data theft, malware installation, or permanent compromise of the IT environment.
Recommendation
It is recommended to immediately update the PLY library to the latest version if available, or apply temporary mitigations such as blocking access to the `yacc()` function with the `picklefile` parameter and monitoring logs for suspicious deserialization attempts.
Original NVD description (English source)
An undocumented and unsafe feature in the PLY (Python Lex-Yacc) library 3.11 allows Remote Code Execution (RCE) via the `picklefile` parameter in the `yacc()` function. This parameter accepts a `.pkl` file that is deserialized with `pickle.load()` without validation. Because `pickle` allows execution of embedded code via `__reduce__()`, an attacker can achieve code execution by passing a malicious pickle file. The parameter is not mentioned in official documentation or the GitHub repository, yet it is active in the PyPI version. This introduces a stealthy backdoor and persistence risk. NOTE: A third-party states that this vulnerability should be rejected because the proof of concept does not demonstrate arbitrary code execution and fails to complete successfully.

