Impact
The vulnerability stems from web3.py’s handling of the CCIP Read/OffchainLookup mechanism as defined by EIP‑3668. The library performs HTTP requests to URLs supplied by a smart contract without validating the destination, allowing an attacker to supply arbitrary URLs. This missing validation results in a Server‑Side Request Forgery that can be leveraged from any backend process that uses the library’s .call() method. The flaw can expose internal network resources or cloud metadata services to attackers through the library.
Affected Systems
The affected library is Ethereum’s web3.py. Versions starting with 6.0.0b3 up to but excluding 7.15.0 and including 8.0.0b2 are vulnerable. All providers have CCIP Read enabled by default, so any application that uses .call() with untrusted or user‑supplied contract addresses is at risk.
Risk and Exploitability
The CVSS score of 1.7 indicates a low‑severity flaw, and no EPSS information is available; the vulnerability is not listed in the CISA KEV catalog. The likely attack path involves a malicious smart contract returning an offchain_lookup_payload containing crafted URLs, causing a backend service running web3.py to issue requests to arbitrary endpoints. Because the library performs the calls automatically, no additional user interaction is required other than the execution of .call() against the contract. The lack of destination validation makes exploitation straightforward for an attacker who can control the contract data.
OpenCVE Enrichment
Github GHSA