9.8
CRITICAL CVSS 3.1
CVE-2025-56005
PLY Python Lex-Yacc Remote Code Execution (RCE) via Unvalidated Pickle File
Description

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.

INFO

Published Date :

Jan. 20, 2026, 7:15 p.m.

Last Modified :

Feb. 6, 2026, 8:16 p.m.

Remotely Exploit :

Yes !
Affected Products

The following products are affected by CVE-2025-56005 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Dabeaz ply
CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and displays CVSS scores from various sources for each CVE.
Score Version Severity Vector Exploitability Score Impact Score Source
CVSS 3.1 CRITICAL 134c704f-9b21-4f2e-91b3-4a467353bcc0
Solution
Update PLY to a version that removes or secures the unsafe picklefile parameter.
  • Update the PLY library to the latest secure version.
  • Remove or disable the picklefile parameter if possible.
  • Avoid deserializing untrusted pickle files.
Public PoC/Exploit Available at Github

CVE-2025-56005 has a 2 public PoC/Exploit available at Github. Go to the Public Exploits tab to see the list.

References to Advisories, Solutions, and Tools
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2025-56005 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2025-56005 weaknesses.

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Clarification Regarding the Rejection Arguments

Updated: 1 week, 4 days ago
0 stars 0 fork 0 watcher
Born at : Jan. 28, 2026, 2:15 p.m. This repo has been linked 1 different CVEs too.

Arguments to reject CVE-2025-56005

Python

Updated: 1 week, 6 days ago
0 stars 0 fork 0 watcher
Born at : Jan. 27, 2026, 11:34 a.m. This repo has been linked 1 different CVEs too.

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2025-56005 vulnerability anywhere in the article.

  • CybersecurityNews
Critical Vulnerability in Python PLY Library Enables Remote Code Execution – PoC Published

A critical vulnerability has been identified in the PyPI-distributed version of PLY (Python Lex-Yacc) 3.11, allowing arbitrary code execution through unsafe deserialization of untrusted pickle files. ... Read more

Published Date: Jan 27, 2026 (1 week, 6 days ago)

The following table lists the changes that have been made to the CVE-2025-56005 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • CVE Modified by [email protected]

    Feb. 06, 2026

    Action Type Old Value New Value
    Added Tag disputed
    Changed Description 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. 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.
    Added Reference https://github.com/tom025/ply_exploit_rejection/issues/1
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 30, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/30/1
  • Initial Analysis by [email protected]

    Jan. 30, 2026

    Action Type Old Value New Value
    Added CPE Configuration OR *cpe:2.3:a:dabeaz:ply:3.11:*:*:*:*:*:*:*
    Added Reference Type MITRE: https://github.com/bohmiiidd/Undocumented-RCE-in-PLY Types: Exploit, Third Party Advisory
    Added Reference Type MITRE: https://github.com/bohmiiidd/Undocumument_RCE_PLY-yacc-CVE-2025-56005 Types: Exploit, Third Party Advisory
    Added Reference Type MITRE: https://github.com/tom025/ply_exploit_rejection Types: Exploit, Mitigation, Third Party Advisory
    Added Reference Type CVE: http://www.openwall.com/lists/oss-security/2026/01/23/4 Types: Exploit, Mailing List
    Added Reference Type CVE: http://www.openwall.com/lists/oss-security/2026/01/23/5 Types: Mailing List
    Added Reference Type CVE: http://www.openwall.com/lists/oss-security/2026/01/28/5 Types: Exploit, Mailing List
    Added Reference Type CVE: http://www.openwall.com/lists/oss-security/2026/01/29/1 Types: Exploit, Mailing List
    Added Reference Type CVE: http://www.openwall.com/lists/oss-security/2026/01/29/2 Types: Mailing List
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 29, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/29/2
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 29, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/29/1
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 29, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/28/5
  • CVE Modified by [email protected]

    Jan. 28, 2026

    Action Type Old Value New Value
    Added Reference https://github.com/bohmiiidd/Undocumument_RCE_PLY-yacc-CVE-2025-56005
  • CVE Modified by [email protected]

    Jan. 28, 2026

    Action Type Old Value New Value
    Added Reference https://github.com/tom025/ply_exploit_rejection
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 23, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/23/5
  • CVE Modified by af854a3a-2127-422b-91ae-364da2661108

    Jan. 23, 2026

    Action Type Old Value New Value
    Added Reference http://www.openwall.com/lists/oss-security/2026/01/23/4
  • CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0

    Jan. 20, 2026

    Action Type Old Value New Value
    Added CVSS V3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    Added CWE CWE-502
  • New CVE Received by [email protected]

    Jan. 20, 2026

    Action Type Old Value New Value
    Added Description 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.
    Added Reference https://github.com/bohmiiidd/Undocumented-RCE-in-PLY
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.
Vulnerability Scoring Details
Base CVSS Score: 9.8
Attack Vector
Attack Complexity
Privileges Required
User Interaction
Scope
Confidentiality Impact
Integrity Impact
Availability Impact