CVE-2025-62608

9.1 CRITICAL

📋 TL;DR

CVE-2025-62608 is a heap buffer overflow vulnerability in MLX's load() function when parsing malicious NumPy .npy files. Attackers can trigger a 13-byte out-of-bounds read, potentially causing crashes or information disclosure. This affects all users of MLX versions before 0.29.4 who process untrusted .npy files.

💻 Affected Systems

Products:
  • MLX (array framework for machine learning on Apple silicon)
Versions: All versions prior to 0.29.4
Operating Systems: macOS (Apple silicon), Linux (Apple silicon)
Default Config Vulnerable: ⚠️ Yes
Notes: Only vulnerable when processing .npy files through mlx::core::load() function.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise if the out-of-bounds read can be weaponized into arbitrary code execution.

🟠

Likely Case

Application crash (denial of service) or limited information disclosure from heap memory.

🟢

If Mitigated

No impact if patched version is used or untrusted .npy files are not processed.

🌐 Internet-Facing: MEDIUM - Requires processing attacker-controlled files, but MLX is typically used in backend ML pipelines rather than directly internet-exposed.
🏢 Internal Only: MEDIUM - Internal users could exploit if they can supply malicious .npy files to MLX processing systems.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires the attacker to supply a malicious .npy file that gets processed by the vulnerable load() function.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.29.4

Vendor Advisory: https://github.com/ml-explore/mlx/security/advisories/GHSA-w6vg-jg77-2qg6

Restart Required: No

Instructions:

1. Update MLX to version 0.29.4 or later using pip: 'pip install --upgrade mlx>=0.29.4' 2. Verify the update completed successfully. 3. No restart required for Python applications, but restart any long-running MLX processes.

🔧 Temporary Workarounds

Input validation for .npy files

all

Implement strict validation of .npy files before passing to mlx::core::load()

Sandbox MLX processing

all

Run MLX in isolated containers or sandboxes when processing untrusted files

🧯 If You Can't Patch

  • Implement strict access controls to prevent untrusted users from supplying .npy files
  • Monitor for crashes in MLX processes and investigate any .npy file processing failures

🔍 How to Verify

Check if Vulnerable:

Check MLX version: 'python -c "import mlx; print(mlx.__version__)"' - if version < 0.29.4, system is vulnerable.

Check Version:

python -c "import mlx; print(mlx.__version__)"

Verify Fix Applied:

After updating, verify version is 0.29.4 or higher using same command. Test with known safe .npy files to ensure functionality.

📡 Detection & Monitoring

Log Indicators:

  • Segmentation faults or crashes in MLX processes
  • Error messages related to buffer overflows or memory corruption in MLX logs
  • Unexpected termination of MLX file processing jobs

Network Indicators:

  • Unusual file uploads to MLX processing endpoints
  • Multiple failed .npy file processing attempts

SIEM Query:

source="mlx_logs" AND ("segmentation fault" OR "buffer overflow" OR "memory corruption")

🔗 References

📤 Share & Export