DLR-RM stable-baselines3 save_util.py VecNormalize.load deserialization
Published Sep 20, 2026 · Updated Oct 23, 2026
Original summary
Normalized public record · Updated Oct 23, 2026
DLR-RM stable-baselines3 save_util.py VecNormalize.load deserialization
Publisher and source text is retained separately from QFinch interpretation.
QFinch assessment
A security vulnerability has been detected in DLR-RM stable-baselines3 up to 2.9.0. This affects the function PPO.load/load_replay_buffer/VecNormalize.load of the file save_util.py. Such manipulation leads to deserialization. It is possible to launch the attack remotely. The exploit has been disclosed publicly and may be used. In v2.9.0 the PyTorch tensor load path is hardened (weights_only=True), but that hardening was later reverted on master via PR #1913 "Hotfix: revert loading with weights_only=True" [blocked] to fix PyTorch 1.13 compat - so even the one "safe" path is inconsistent across versions. #2281 was closed as a duplicate of #1831 since both are unsafe pickle deserialization - but #1831's fix (PR #41) only gated the Hugging Face Hub loader in the separate huggingface_sb3 package. This finding covers the core stable_baselines3 load APIs (PPO.load, load_replay_buffer, VecNormalize.load), which have no safe mode or gate and remained exploitable in v2.9.0 until the outstanding hardening (PR #2264) ships.
Evidence: public source recordsAffected products
| Affected package, product or range | Fix status |
|---|---|
| Consult the referenced vendor advisory for affected versions. | Consult source advisory |
Matching a version is only one part of assessing exposure. QFinch has not assessed your environment on this public page.
Remediation
Apply the vendor-supported fixed release or mitigation, then verify the affected component is no longer reachable.
- Confirm the affected product and reachable code path exist in your environment.
- Apply the vendor-supported patch or mitigation from the primary advisory.
- Rescan the exact deployed revision and retain verification evidence.
Evidence coverage
- SSVC priority
- LOW
- Confidence
- Not available
- Aliases
- None reported
Scores appear only when corresponding evidence exists. Missing data is never interpreted as zero risk.
Sources and record history
- VDB-408021 | DLR-RM stable-baselines3 save_util.py VecNormalize.load deserialization ↗
- VDB-408021 | CTI Indicators (IOB, IOC, IOA) ↗
- CVE-2026-94093 | CVE Analysis and Report ↗
- Submit #952734 | DLR-RM stable-baselines3 v2.9.0 rce ↗
- Source repository ↗
- Source repository ↗
Record history
Published Sep 20, 2026 · Last refreshed Oct 23, 2026