The SentinelOne Annual Threat Report - A Defenders Guide from the FrontlinesThe SentinelOne Annual Threat ReportGet the Report
Experiencing a Breach?Blog
Get StartedContact Us
SentinelOne
  • Platform
    Platform Overview
    • Singularity Platform
      Welcome to Integrated Enterprise Security
    • AI for Security
      Leading the Way in AI-Powered Security Solutions
    • Securing AI
      Accelerate AI Adoption with Secure AI Tools, Apps, and Agents.
    • How It Works
      The Singularity XDR Difference
    • Singularity Marketplace
      One-Click Integrations to Unlock the Power of XDR
    • Pricing & Packaging
      Comparisons and Guidance at a Glance
    Data & AI
    • Purple AI
      Accelerate SecOps with Generative AI
    • Singularity Hyperautomation
      Easily Automate Security Processes
    • AI-SIEM
      The AI SIEM for the Autonomous SOC
    • AI Data Pipelines
      Security Data Pipeline for AI SIEM and Data Optimization
    • Singularity Data Lake
      AI-Powered, Unified Data Lake
    • Singularity Data Lake for Log Analytics
      Seamlessly Ingest Data from On-Prem, Cloud or Hybrid Environments
    Endpoint Security
    • Singularity Endpoint
      Autonomous Prevention, Detection, and Response
    • Singularity XDR
      Native & Open Protection, Detection, and Response
    • Singularity RemoteOps Forensics
      Orchestrate Forensics at Scale
    • Singularity Threat Intelligence
      Comprehensive Adversary Intelligence
    • Singularity Vulnerability Management
      Application & OS Vulnerability Management
    • Singularity Identity
      Identity Threat Detection and Response
    Cloud Security
    • Singularity Cloud Security
      Block Attacks with an AI-Powered CNAPP
    • Singularity Cloud Native Security
      Secure Cloud and Development Resources
    • Singularity Cloud Workload Security
      Real-Time Cloud Workload Protection Platform
    • Singularity Cloud Data Security
      AI-Powered Threat Detection for Cloud Storage
    • Singularity Cloud Security Posture Management
      Detect and Remediate Cloud Misconfigurations
    Securing AI
    • Prompt Security
      Secure AI Tools Across Your Enterprise
  • Why SentinelOne?
    Why SentinelOne?
    • Why SentinelOne?
      Cybersecurity Built for What’s Next
    • Our Customers
      Trusted by the World’s Leading Enterprises
    • Industry Recognition
      Tested and Proven by the Experts
    • About Us
      The Industry Leader in Autonomous Cybersecurity
    Compare SentinelOne
    • Arctic Wolf
    • Broadcom
    • CrowdStrike
    • Cybereason
    • Microsoft
    • Palo Alto Networks
    • Sophos
    • Splunk
    • Trellix
    • Trend Micro
    • Wiz
    Verticals
    • Energy
    • Federal Government
    • Finance
    • Healthcare
    • Higher Education
    • K-12 Education
    • Manufacturing
    • Retail
    • State and Local Government
  • Services
    Managed Services
    • Managed Services Overview
      Wayfinder Threat Detection & Response
    • Threat Hunting
      World-Class Expertise and Threat Intelligence
    • Managed Detection & Response
      24/7/365 Expert MDR Across Your Entire Environment
    • Incident Readiness & Response
      DFIR, Breach Readiness, & Compromise Assessments
    Support, Deployment, & Health
    • Technical Account Management
      Customer Success with Personalized Service
    • SentinelOne GO
      Guided Onboarding & Deployment Advisory
    • SentinelOne University
      Live and On-Demand Training
    • Services Overview
      Comprehensive Solutions for Seamless Security Operations
    • SentinelOne Community
      Community Login
  • Partners
    Our Network
    • MSSP Partners
      Succeed Faster with SentinelOne
    • Singularity Marketplace
      Extend the Power of S1 Technology
    • Cyber Risk Partners
      Enlist Pro Response and Advisory Teams
    • Technology Alliances
      Integrated, Enterprise-Scale Solutions
    • SentinelOne for AWS
      Hosted in AWS Regions Around the World
    • Channel Partners
      Deliver the Right Solutions, Together
    • SentinelOne for Google Cloud
      Unified, Autonomous Security Giving Defenders the Advantage at Global Scale
    • Partner Locator
      Your Go-to Source for Our Top Partners in Your Region
    Partner Portal→
  • Resources
    Resource Center
    • Case Studies
    • Data Sheets
    • eBooks
    • Reports
    • Videos
    • Webinars
    • Whitepapers
    • Events
    View All Resources→
    Blog
    • Feature Spotlight
    • For CISO/CIO
    • From the Front Lines
    • Identity
    • Cloud
    • macOS
    • SentinelOne Blog
    Blog→
    Tech Resources
    • SentinelLABS
    • Ransomware Anthology
    • Cybersecurity 101
  • About
    About SentinelOne
    • About SentinelOne
      The Industry Leader in Cybersecurity
    • Investor Relations
      Financial Information & Events
    • SentinelLABS
      Threat Research for the Modern Threat Hunter
    • Careers
      The Latest Job Opportunities
    • Press & News
      Company Announcements
    • Cybersecurity Blog
      The Latest Cybersecurity Threats, News, & More
    • FAQ
      Get Answers to Our Most Frequently Asked Questions
    • DataSet
      The Live Data Platform
    • S Foundation
      Securing a Safer Future for All
    • S Ventures
      Investing in the Next Generation of Security, Data and AI
  • Pricing
Get StartedContact Us
CVE Vulnerability Database
Vulnerability Database/CVE-2026-31237

CVE-2026-31237: Ludwig Framework RCE Vulnerability

CVE-2026-31237 is a remote code execution flaw in Ludwig Framework through version 0.10.4 caused by insecure deserialization. Attackers can exploit this via malicious pickle files to execute arbitrary code.

Published: May 17, 2026

CVE-2026-31237 Overview

CVE-2026-31237 is an insecure deserialization vulnerability [CWE-502] in the Ludwig machine learning framework through version 0.10.4. The flaw resides in the predict() method, which automatically infers the format of a supplied dataset file. When the input is a pickle (.pkl) file, Ludwig calls pandas.read_pickle() without any validation or sandboxing. A remote attacker who can supply a dataset path to predict() can deliver a crafted pickle payload that triggers arbitrary code execution in the process running Ludwig.

Critical Impact

A maliciously crafted pickle file passed to Ludwig's predict() method results in arbitrary Python code execution on the host running inference.

Affected Products

  • Ludwig framework versions up to and including 0.10.4
  • Applications and services that expose Ludwig's predict() method to user-supplied dataset paths
  • ML inference pipelines that accept pickle-format datasets through Ludwig

Discovery Timeline

  • 2026-05-12 - CVE-2026-31237 published to NVD
  • 2026-05-14 - Last updated in NVD database

Technical Details for CVE-2026-31237

Vulnerability Analysis

Ludwig is a declarative deep learning framework that allows users to train and run inference on models through configuration files and dataset inputs. The predict() method accepts a dataset argument and dispatches to a format-specific loader based on file extension or content sniffing. When the framework identifies a pickle file, it loads the data with pandas.read_pickle(), which internally calls Python's pickle.load().

Python's pickle module is not a safe deserialization format. Pickle streams can embed arbitrary callables through the __reduce__ protocol, and any object reconstructed from an untrusted stream may execute attacker-controlled code during deserialization. Ludwig performs no signature verification, allowlisting, or sandboxing before invoking the loader.

Root Cause

The root cause is the unconditional use of pandas.read_pickle() on a user-controlled file path inside predict(). The framework treats pickle as an interchangeable tabular format alongside CSV, Parquet, and JSON, but pickle carries executable semantics. No validation distinguishes trusted local artifacts from untrusted inputs received through APIs, shared storage, or upload endpoints.

Attack Vector

An attacker crafts a pickle file whose __reduce__ method returns a callable such as os.system or subprocess.Popen together with attacker-controlled arguments. The attacker delivers this file to any system that invokes Ludwig's predict() against attacker-influenced paths. This includes hosted inference services that accept dataset uploads, batch prediction jobs that read from shared object storage, and MLOps pipelines that pull artifacts from external registries. When Ludwig calls pandas.read_pickle(), the embedded callable executes in the inference process, yielding remote code execution with the privileges of the Ludwig runtime.

The vulnerability mechanism follows the standard pickle deserialization attack pattern documented for CWE-502. No authentication or user interaction is required when the prediction endpoint is exposed to untrusted input. Refer to the Ludwig AI repository for the affected code paths.

Detection Methods for CVE-2026-31237

Indicators of Compromise

  • Pickle files (.pkl) appearing in dataset directories, upload buckets, or model artifact stores from untrusted origins
  • Unexpected child processes spawned by Python interpreters running Ludwig, particularly shells, network utilities, or package managers
  • Outbound network connections from inference workers to unknown hosts shortly after a predict() invocation
  • Filesystem modifications under model serving directories that do not correlate with deployment events

Detection Strategies

  • Inspect prediction job inputs for files with the .pkl extension or pickle magic bytes (\\x80\\x04 and similar) where CSV, Parquet, or JSON is expected
  • Audit Python process trees for pandas.read_pickle call sites on user-controlled paths through static analysis of ML application code
  • Monitor for pickle.load, pickle.loads, and pandas.read_pickle invocations through Python runtime instrumentation or eBPF-based syscall tracing
  • Correlate dataset upload events with subsequent process creation, file write, and network connection events on inference hosts

Monitoring Recommendations

  • Log all calls to Ludwig's predict() method with the resolved file path and originating identity
  • Alert on inference containers initiating outbound connections outside of an approved allowlist
  • Track file integrity on model and dataset directories and flag pickle artifacts that arrive outside of normal deployment workflows
  • Capture parent-child process relationships for Python workers and alert when shells or interpreters are spawned

How to Mitigate CVE-2026-31237

Immediate Actions Required

  • Reject pickle inputs at the application boundary and require dataset formats such as CSV, Parquet, or Arrow for any user-supplied data
  • Run Ludwig inference workloads under least-privilege service accounts inside isolated containers without outbound internet access
  • Audit existing dataset stores and remove any .pkl files that cannot be attributed to a trusted producer
  • Restrict who can submit prediction jobs and validate dataset paths against an allowlist of trusted locations

Patch Information

No fixed version was identified in the NVD record at the time of publication. The vulnerability affects Ludwig through 0.10.4. Track the Ludwig AI repository for an upstream fix and pin to a patched release once available. Until then, treat all pickle handling in Ludwig as unsafe and remove the code path from production deployments.

Workarounds

  • Wrap or monkey-patch pandas.read_pickle in deployed environments to raise an exception, forcing callers to use safe formats
  • Convert all legitimate pickle datasets to Parquet or Arrow and disable pickle support in the data ingestion layer
  • Apply seccomp or AppArmor profiles to inference containers that block execve of shells and unexpected binaries
  • Use signed dataset manifests so that inference workers verify provenance before loading any file
bash
# Example: block .pkl uploads at the ingress layer and enforce safe formats
# nginx configuration fragment
location /predict {
    if ($request_filename ~* \.pkl$) {
        return 415;
    }
    client_max_body_size 100m;
    proxy_pass http://ludwig_upstream;
}

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

  • Vulnerability Details
  • TypeRCE

  • Vendor/TechLudwig

  • SeverityCRITICAL

  • CVSS Score9.8

  • EPSS Probability0.39%

  • Known ExploitedNo
  • CVSS Vector
  • CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Impact Assessment
  • ConfidentialityLow
  • IntegrityNone
  • AvailabilityHigh
  • CWE References
  • CWE-502
  • Technical References
  • GitHub Ludwig AI Repository

  • Notion CVE-2026-31237 Document
  • Related CVEs
  • CVE-2026-31238: Ludwig Framework RCE Vulnerability
Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.

Try SentinelOne
  • Get Started
  • Get a Demo
  • Product Tour
  • Why SentinelOne
  • Pricing & Packaging
  • FAQ
  • Contact
  • Contact Us
  • Customer Support
  • SentinelOne Status
  • Language
  • Platform
  • Singularity Platform
  • Singularity Endpoint
  • Singularity Cloud
  • Singularity AI-SIEM
  • Singularity Identity
  • Singularity Marketplace
  • Purple AI
  • Services
  • Wayfinder TDR
  • SentinelOne GO
  • Technical Account Management
  • Support Services
  • Verticals
  • Energy
  • Federal Government
  • Finance
  • Healthcare
  • Higher Education
  • K-12 Education
  • Manufacturing
  • Retail
  • State and Local Government
  • Cybersecurity for SMB
  • Resources
  • Blog
  • Labs
  • Case Studies
  • Videos
  • Product Tours
  • Events
  • Cybersecurity 101
  • eBooks
  • Webinars
  • Whitepapers
  • Press
  • News
  • Ransomware Anthology
  • Company
  • About Us
  • Our Customers
  • Careers
  • Partners
  • Legal & Compliance
  • Security & Compliance
  • Investor Relations
  • S Foundation
  • S Ventures

©2026 SentinelOne, All Rights Reserved.

Privacy Notice Terms of Use

English