Description
The Ludwig framework thru 0.10.4 is vulnerable to insecure deserialization (CWE-502) through its predict() method. When a user provides a dataset file path to the predict() method, the framework automatically determines the file format. If the file is a pickle (.pkl) file, it is loaded using pandas.read_pickle() without any validation or security restrictions. This allows the deserialization of arbitrary Python objects via the unsafe pickle module. A remote attacker can exploit this by providing a maliciously crafted pickle file, leading to arbitrary code execution on the system running the Ludwig prediction.
Published: 2026-05-12
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Ludwig framework, as used in versions 0.10.4 and earlier, contains an insecure deserialization flaw in its predict() method. When a user supplies a dataset file path, the framework automatically determines the format; if the file is a pickle (.pkl) it is loaded directly with pandas.read_pickle() without any validation or security checks. This permits a malicious attacker to craft a pickle file that deserializes arbitrary Python objects, leading to remote code execution on the system running the Ludwig prediction engine.

Affected Systems

The vulnerability affects every installation of the Ludwig framework 0.10.4 or earlier, regardless of the hosting environment. Any deployment that exposes the predict() API and accepts local file paths can be exploited. The issue is vendor‑agnostic within this product line; it does not affect downstream packages that only use stable, non‑pickle inputs.

Risk and Exploitability

The attack vector is remote, requiring an attacker to send a crafted pickle file to the predict endpoint over the network. The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, but the absence of a remedial patch in exposed deployments makes exploitation likely. While no CVSS score is assigned in the data, the potential for arbitrary code execution is generally classified as critical. Therefore, the risk is high for any system that runs the vulnerable Ludwig version and is reachable by untrusted users.

Generated by OpenCVE AI on May 12, 2026 at 18:28 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Ludwig framework to 0.11 or later to remove the insecure deserialization path.
  • If upgrading is delayed, reconfigure the predict() API to reject .pkl files or implement explicit validation of the input file type before passing it to pandas.read_pickle().
  • Restrict the network exposure of the Ludwig predict service so that only trusted internal hosts can invoke it, using firewall rules or network segmentation.

Generated by OpenCVE AI on May 12, 2026 at 18:28 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 12 May 2026 18:45:00 +0000

Type Values Removed Values Added
Title Insecure Deserialization in Ludwig Framework Allows Remote Code Execution via Predict Method
Weaknesses CWE-502

Tue, 12 May 2026 17:30:00 +0000

Type Values Removed Values Added
Description The Ludwig framework thru 0.10.4 is vulnerable to insecure deserialization (CWE-502) through its predict() method. When a user provides a dataset file path to the predict() method, the framework automatically determines the file format. If the file is a pickle (.pkl) file, it is loaded using pandas.read_pickle() without any validation or security restrictions. This allows the deserialization of arbitrary Python objects via the unsafe pickle module. A remote attacker can exploit this by providing a maliciously crafted pickle file, leading to arbitrary code execution on the system running the Ludwig prediction.
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: mitre

Published:

Updated: 2026-05-12T17:13:00.667Z

Reserved: 2026-03-09T00:00:00.000Z

Link: CVE-2026-31237

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-05-12T18:16:52.087

Modified: 2026-05-12T18:16:52.087

Link: CVE-2026-31237

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-12T18:30:22Z

Weaknesses