web3.py affected by SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ethereum | web3.py | affected |
|
Configuration 1 [-]
|
No data.
| Vendor | Product | Versions | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ethereum | Web3.py |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-5hr4-253g-cpx2 | web3.py: SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling |
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.237% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Apeworx
Apeworx web3.py |
|
| CPEs | cpe:2.3:a:apeworx:web3.py:*:*:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:-:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta10:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta11:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta3:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta4:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta5:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta6:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta7:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta8:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:6.0.0:beta9:*:*:*:python:*:* cpe:2.3:a:apeworx:web3.py:8.0.0:beta1:*:*:*:python:*:* |
|
| Vendors & Products |
Apeworx
Apeworx web3.py |
|
| Metrics |
cvssV3_1
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Ethereum
Ethereum web3.py |
|
| Vendors & Products |
Ethereum
Ethereum web3.py |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| Description | web3.py allows you to interact with the Ethereum blockchain using Python. From 6.0.0b3 to before 7.15.0 and 8.0.0b2, web3.py implements CCIP Read / OffchainLookup (EIP-3668) by performing HTTP requests to URLs supplied by smart contracts in offchain_lookup_payload["urls"]. The implementation uses these contract-supplied URLs directly (after {sender} / {data} template substitution) without any destination validation. CCIP Read is enabled by default (global_ccip_read_enabled = True on all providers), meaning any application using web3.py's .call() method is exposed without explicit opt-in. This results in Server-Side Request Forgery (SSRF) when web3.py is used in backend services, indexers, APIs, or any environment that performs eth_call / .call() against untrusted or user-supplied contract addresses. A malicious contract can force the web3.py process to issue HTTP requests to arbitrary destinations, including internal network services and cloud metadata endpoints. This vulnerability is fixed in 7.15.0 and 8.0.0b2. | |
| Title | web3.py affected by SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling | |
| Weaknesses | CWE-918 | |
| References |
| |
| Metrics |
cvssV4_0
|