Python plistlib Module Out-of-Memory Denial-of-Service Vulnerability

Vulnerability

A denial-of-service vulnerability has been identified in the Python plistlib module, specifically in versions 3.10, 3.11, 3.12, 3.13, and 3.14. When the module loads a plist file, it reads data based on the size specified by the file, which can be up to 2^64 bytes. This behavior allows a maliciously crafted plist file to cause excessive memory allocation, leading to out-of-memory conditions and potential process or system crashes.

Impact

Exploitation of this vulnerability can cause out-of-memory conditions, leading to killed processes or containers, or even system crashes.

Reproduction

The vulnerability can be reproduced by using the plistlib module to load a binary plist file that has been crafted to include a large amount of data. This can be done by writing a plist file that specifies a size larger than what can be handled, such as 2**64 bytes, and then using the plistlib.load() function to read the file. The issue can also be reproduced by using the 'test_truncated_large_data' test case added in the patch, which simulates the same condition by writing a file that triggers the out-of-memory behavior.

Remediation

Users can update to Python versions 3.10.13, 3.11.13, 3.12.6, 3.13.5, or 3.14.5, where this vulnerability has been fixed.

Added: Dec 1, 2025, 6:17 PM
Updated: Dec 1, 2025, 7:20 PM

Vulnerability Rating

Custom Algorithm
spread
0.0
impact
2.5
exploitability
7.4
remediation
0.0
relevance
1.2
threat
4.8
urgency
2.9
incentive
1.7

Our algorithm analyzes dozens of metrics to generate these 8 key vulnerability categories, which are then combined to calculate the overall risk score.