Skip to content

RPyC's missing security check results in code execution when using numpy.array on the server-side.

High severity GitHub Reviewed Published Mar 6, 2024 in tomerfiliba-org/rpyc • Updated Mar 13, 2024

Package

pip rpyc (pip)

Affected versions

>= 4.0.0, < 6.0.0

Patched versions

6.0.0

Description

An issue in Open Source: RPyC v.4.00 thru v.5.3.1 allows a remote attacker to execute arbitrary code via a crafted script to the __array__ attribute component. This vulnerability was introduced in 9f45f826.

Attack Vector

RPyC services that rely on the __array__ attribute used by numpy are impacted. When the server-side exposes a method that calls the attribute named __array__ for a a client provided netref (e.g., np.array(client_netref)), a remote attacker can craft a class which results in remote code execution

Impact

Assuming the system exposes a method that calls the attribute __array__, an attacker can execute code using the vulnerable component.

Patches

The fix is available in RPyC 6.0.0. The major version change is because some users may need to set allow_pickle to True when migrating to RPyC 6.

Workarounds

While the recommend fix is to upgrade to RPyC 6.0.0, the workaround is to apply bba1d356 as patch.

Affected Component

The affected component is the __array__ method constructed for NetrefClass.

References

References

@comrumino comrumino published to tomerfiliba-org/rpyc Mar 6, 2024
Published to the GitHub Advisory Database Mar 6, 2024
Reviewed Mar 6, 2024
Published by the National Vulnerability Database Mar 12, 2024
Last updated Mar 13, 2024

Severity

High
8.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
Low
Availability
None
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N

CVE ID

CVE-2024-27758

GHSA ID

GHSA-h5cg-53g7-gqjw

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.