PyTorch Lightning load_from_checkpoint has an insecure checkpoint deserialization
High7.8CVE-2026-31221 · Published May 12, 2026 · updated Sep 10, 2026
PyTorch-Lightning versions 2.6.0 and earlier contain an insecure deserialization vulnerability (CWE-502) in the checkpoint loading mechanism. The LightningModule.load_from_checkpoint() method, which is commonly used to load saved model states, internally calls torch.load() without setting the security-restrictive weights_only=True parameter. This default behavior allows the deserialization of arbitrary Python objects via the Pickle module. A remote attacker can exploit this by providing a maliciously crafted checkpoint file, leading to arbitrary code execution on the victim's system when the file is loaded.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| pytorch-lightning PyPI | <= 2.6.0 | No fix yet |
Details and references
- CVSS 3.1
- CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-502
- Also known as
- CVE-2026-31221, PYSEC-2026-3043, PYSEC-2026-3972
More pytorch-lightning advisories
All pytorch-lightning| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| Sep 10 | pytorch-lightning vulnerable to Arbitrary File Write via /v1/runs API endpoint | Critical9.1 | 2.3.3 |
| Sep 10 | Remote code execution in pytorch lightning | Critical9.8 | 2.3.3 |
| Jul 15 | pytorch-lightning: remote code execution | High7.8 | 2.6.6 |
| May 7 | Compromise of PyTorch Lightning PyPi Package Versions | Critical9.8 | No fix yet |
| Mar 202025 | PyTorch Lightning denial of service vulnerability | High7.5 | No fix yet |
| Mar 202025 | PyTorch Lightning path traversal vulnerability | Critical9.1 | 2.4.0 |