CVE-2026-111171: Web3.py 7.15.0 through 7.16.0 and 8.0.0b2 through 8.0.0 CCIP-Read SSRF Bypass
Web3.py 7.15.0 through 7.16.0 and 8.0.0b2 through 8.0.0 contains a server-side request forgery vulnerability because checkipblocked() does not unwrap IPv4-mapped IPv6 addresses in CCIP Read URL validation. Malicious contracts can return OffchainLookup URLs with IPv4-mapped IPv6 hosts or AAAA records, making clients with CCIP Read enabled send requests to loopback, private, or link-local services.
Affected Software
Event History
Frequently Asked Questions
Which deployments are exposed?
Clients using Web3.py 7.15.0 through 7.16.0 or 8.0.0b2 through 8.0.0 are exposed if CCIP Read is enabled. The issue affects CCIP Read URL validation when resolving OffchainLookup URLs returned by contracts.
What does an attacker need to exploit this?
An attacker needs a malicious contract to return an OffchainLookup URL using an IPv4-mapped IPv6 host or an AAAA record. This can cause a CCIP Read-enabled client to request loopback, private, or link-local services.
What can be done if updating is not immediately possible?
Disable CCIP Read where possible to prevent the client from fetching OffchainLookup URLs. This removes the vulnerable request path described for affected versions.
How can I determine whether an application is affected?
Check the installed Web3.py version and whether the application enables CCIP Read. Applications that interact with contracts capable of returning OffchainLookup URLs are the relevant exposure point.