Skip to main content

Pyro3 CVE-2026-31048

| EUVDEUVD-2026-22059 CRITICAL
Code Injection (CWE-94)
2026-04-13 mitre
9.8
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
9.8 CRITICAL

Pyro3 unpickles untrusted client messages by default over the network with no authentication or interaction, yielding full code execution, so AV:N/AC:L/PR:N/UI:N and C/I/A all High.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
Analysis Generated
Jul 24, 2026 - 08:08 vuln.today
CVSS changed
Apr 15, 2026 - 16:22 NVD
9.8 (CRITICAL)
EUVD ID Assigned
Apr 13, 2026 - 19:30 euvd
EUVD-2026-22059
CVE Published
Apr 13, 2026 - 00:00 nvd
CRITICAL 9.8

DescriptionCVE.org

An issue in the <code>pickle</code> protocol of Pyro v3.x allows attackers to execute arbitrary code via supplying a crafted pickled string message.

AnalysisAI

Remote code execution in Pyro (Python Remote Objects) 3.x arises because the wire protocol deserializes untrusted client messages with Python's pickle module, letting an attacker who can reach a Pyro daemon run arbitrary code by sending a crafted pickled message. All Pyro 3.x deployments that accept network connections are affected, and CWE-94 code injection combined with the CVSS 9.8 rating reflects full compromise of the host process. There is no public exploit identified at time of analysis, and the low EPSS score (0.02%) suggests no observed opportunistic exploitation despite the trivial technical requirements.

Technical ContextAI

Pyro3 is a legacy Python RPC framework that serializes remote method calls and their arguments for transport between clients and a Pyro daemon. The flaw is the classic insecure-deserialization pattern (CWE-94 / code injection): the protocol layer (referenced at Pyro/protocol.py lines 672-711) unpickles incoming byte streams, and pickle's __reduce__ mechanism executes arbitrary callables during object reconstruction. Because pickle is not a safe serialization format for untrusted input, any endpoint that unpickles attacker-controlled bytes effectively grants code execution; the CPE data is unhelpful here (listed as 'n/a'), so affected-product identity comes from the reference URLs pointing to the irmen/Pyro3 repository rather than structured CPE.

RemediationAI

No vendor-released patched version is identified at time of analysis, and Pyro3 is a retired codebase; the strongest remediation is to migrate off Pyro3 to a maintained RPC framework or a Pyro version/serializer that does not unpickle untrusted data, since pickle-based transport is insecure by design. As compensating controls: restrict network access to the Pyro daemon port so only trusted, authenticated hosts can connect (e.g., firewall the Pyro port to a management subnet or bind it to localhost), which prevents untrusted clients from delivering pickled payloads but breaks legitimate remote clients that rely on open access; require transport-level mutual authentication/VPN in front of the daemon so unauthenticated peers cannot reach the deserializer; and consult Pyro's own security guidance (github.com/irmen/Pyro3/blob/master/docs/9-security.html#L341-L346) and the advisory GHSA-7625-w9h5-83rv for configuration hardening. Treat any deployment that accepts pickle from clients as trust-equivalent to granting those clients shell access.

More in N A

View all
CVE-2024-51092 CRITICAL POC
9.1 May 08

LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr

CVE-2025-15684 MEDIUM POC
5.5 Aug 12

Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han

CVE-2024-45257 HIGH POC
7.3 May 08

A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi

CVE-2025-15687 LOW POC
2.1 Aug 12

Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc

CVE-2025-15686 LOW POC
2.1 Aug 12

Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula

CVE-2025-67888 HIGH POC
7.3 May 08

Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root

CVE-2024-53326 HIGH POC
7.3 May 08

LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(

CVE-2026-38360 CRITICAL POC
9.8 May 08

Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti

CVE-2026-30623 CRITICAL POC
9.8 Jul 15

Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr

CVE-2026-67917 CRITICAL POC
9.8 Aug 17

SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg

CVE-2026-75337 CRITICAL POC
9.8 Aug 27

Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ

CVE-2026-31072 CRITICAL POC
9.8 May 19

Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali

Share

CVE-2026-31048 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy