CVE-2026-31072

apscheduler: APScheduler: Remote Code Execution via Insecure Deserialization

Published May 19, 2026 CVSS 3.1 · 9.8 Critical EPSS < 1% KEV · Not listed
Description
The JSONSerializer and CBORSerializer in APScheduler (all versions including 3.10.x and 4.0.0a5) are vulnerable to Remote Code Execution (RCE) via Insecure Deserialization. The unmarshal_object function allows for arbitrary class instantiation and state injection by dynamically importing modules and calling __setstate__ on any class available in the Python environment. An attacker can exploit this by submitting a specially crafted JSON or CBOR payload to an application using these serializers

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-9cfw-f3f9-7mm7 APScheduler's JSONSerializer and CBORSerializer are vulnerable to Remote Code Execution (RCE) via Insecure Deserialization
History
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}

cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}

Type Values Removed Values Added
First Time appeared Agronholm
Agronholm apscheduler
Vendors & Products Agronholm
Agronholm apscheduler
Type Values Removed Values Added
Weaknesses CWE-116
Type Values Removed Values Added
Title Insecure Deserialization in APScheduler Enabling Arbitrary Code Execution apscheduler: APScheduler: Remote Code Execution via Insecure Deserialization
References
Metrics threat_severity

None

cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

threat_severity

Important

Type Values Removed Values Added
Title Insecure Deserialization in APScheduler Enabling Arbitrary Code Execution
Weaknesses CWE-116
CWE-502
Type Values Removed Values Added
Description The JSONSerializer and CBORSerializer in APScheduler (all versions including 3.10.x and 4.0.0a5) are vulnerable to Remote Code Execution (RCE) via Insecure Deserialization. The unmarshal_object function allows for arbitrary class instantiation and state injection by dynamically importing modules and calling __setstate__ on any class available in the Python environment. An attacker can exploit this by submitting a specially crafted JSON or CBOR payload to an application using these serializers
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
mitre
Published
Updated
Jul 15, 2026, 1:09 AM
Reserved
Mar 9, 2026, 12:00 AM
Status
Deferred
Published
May 19, 2026, 4:16 PM
Modified
Jul 24, 2026, 12:10 PM
Severity
Important
Public date
May 19, 2026, 12:00 AM