CVE-2025-56005

Publication date 20 January 2026

Last updated 22 January 2026


Ubuntu priority

Cvss 3 Severity Score

9.8 · Critical

Score breakdown

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.

Read the notes from the security team

Status

Package Ubuntu Release Status
ply 25.10 questing
Vulnerable, fix deferred
24.04 LTS noble
Vulnerable, fix deferred
22.04 LTS jammy
Vulnerable, fix deferred
20.04 LTS focal
Vulnerable, fix deferred
18.04 LTS bionic
Vulnerable, fix deferred
16.04 LTS xenial
Vulnerable, fix deferred

Notes


mdeslaur

This is only an issue if an application is using the "picklefile" parameter, which is undocumented, in combination with untrusted pickle files. This is unlikely. There does not appear to be any applications in the Ubuntu archive using this parameter. Assigning this CVE to the ply library is probably not the right approach, applications that send untrusted pickles to this library should be assigned CVEs instead. ply is no longer being actively developed, so no fix will be available from the upstream developers. We are unlikely to be fixing this issue, deferring for now until more information is available.

Severity score breakdown

Parameter Value
Base score 9.8 · Critical
Attack vector Network
Attack complexity Low
Privileges required None
User interaction None
Scope Unchanged
Confidentiality High
Integrity impact High
Availability impact High
Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H