Ludwig Framework Insecure Deserialization Vulnerability in Predict Method Allowing Arbitrary Code Execution

Vulnerability

A vulnerability allowing insecure deserialization has been identified in the Ludwig framework, affecting versions through 0.10.4. The issue arises in the predict() method, where user-provided dataset file paths are automatically processed to determine the file format. If a pickle file is detected, it is loaded using pandas.read_pickle() without any security checks. This flaw enables the deserialization of arbitrary Python objects, as the pickle module is inherently unsafe. A remote attacker could exploit this vulnerability by crafting a malicious pickle file, potentially leading to arbitrary code execution on the host system.

Impact

Exploitation of this vulnerability could result in arbitrary code execution on the system running the Ludwig framework.

Reproduction

To reproduce this vulnerability, use the Ludwig framework version 0.10.4 or earlier. In the predict() method, provide a dataset file path that points to a maliciously crafted pickle file. The framework will load the file using pandas.read_pickle(), allowing the deserialization of arbitrary Python objects. If the deserialized object includes executable code, it could be executed, leading to arbitrary code execution on the system.

Remediation

Users can update to Ludwig version 0.11.0 or later, where this vulnerability has been addressed.

Added: May 12, 2026, 6:27 PM
Updated: May 12, 2026, 6:27 PM

Vulnerability Rating

Custom Algorithm
spread
0.0
impact
7.5
exploitability
7.1
remediation
0.0
relevance
8.1
threat
4.8
urgency
2.9
incentive
0.0

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