Rpc.py: Insufficiently Protected Credentials
CVE-2022-35411 is a critical-severity insufficiently protected credentials vulnerability in Rpc.py from Rpc.py Project, with a CVSS 3.1 base score of 9.8 out of 10. It can be exploited remotely over the network by an unauthenticated attacker, without any action from a user. Affected Rpc.py versions: 0.4.2 through 0.6.0. The record does not name a fixed version, so check the vendor advisory. There is no confirmed exploitation so far. EPSS estimates a 46.6% chance of exploitation within 30 days, which is in the top 1.16% of all scored CVEs.
Critical severity: a successful attack would have severe impact.
What to do
- Check which version of Rpc.py you run against the affected versions below, and install the vendor's latest release.
- Until you can update, restrict network access to the affected service so it is not reachable from untrusted networks.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Rpc.py Project | Rpc.py | 0.4.2 through 0.6.0 | Not stated |
Version data comes from NVD's product matching. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- NetworkCan be exploited remotely over a network, including the internet.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- NoneNo account or login is needed.
- User interaction
- NoneNo action by a victim is required.
- Scope
- UnchangedImpact stays within the vulnerable component.
- Confidentiality
- HighAll data handled by the component can be read.
- Integrity
- HighData or code can be modified at will.
- Availability
- HighThe component can be taken down completely.
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Scored by NVD.
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 3.1 | 9.8 | Critical | NVD |
| CVSS 2.0 | 7.5 | High | NVD |
Official description
rpc.py through 0.6.0 allows Remote Code Execution because an unpickle occurs when the "serializer: pickle" HTTP header is sent. In other words, although JSON (not Pickle) is the default data format, an unauthenticated client can cause the data to be processed with unpickle.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Insufficiently Protected Credentials
The product transmits or stores authentication credentials, but it uses an insecure method that is susceptible to unauthorized interception and/or retrieval.
How developers prevent this class of flaw
- Use an appropriate security mechanism to protect the credentials.
- Make appropriate use of cryptography to protect the credentials.
- Use industry standards to protect the credentials (e.g. LDAP, keystore, etc.).
More Insufficiently Protected Credentials vulnerabilities (CWE-522)
Timeline
- CVE record published.
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- github.com/abersheeran/rpc.py/commit/491e7a841ed9a754796d6ab047a9fb16e23bf8bdThird Party Advisory
Technical write-ups (may include proof of concept)
- packetstormsecurity.com/files/167872/rpc.py-0.6.0-Remote-Code-Execution.htmlExploit, Third Party Advisory, VDB Entry
- github.com/ehtec/rpcpy-exploitExploit, Third Party Advisory
- medium.com/%40elias.hohl/remote-code-execution-0-day-in-rpc-py-709c76690c30Exploit
Recent Insufficiently Protected Credentials vulnerabilities
- 9.8 Critical severity
- 9.1 Critical severity
- 7.5 High severity
- 7.8 High severity
- 8.8 High severity
- 7.5 High severity
Spotted an error? Tell us.