The vulnerability is a denial-of-service in the alloy-dyn-abi Rust library, caused by an uncaught panic when hashing a malformed EIP-712 TypedData structure. The root cause lies within the alloy_dyn_abi::eip712::resolver::Resolver::encode_type function. This function processes type definitions, and for certain malformed inputs, it would attempt to access the first element of an empty vector using .unwrap(), which triggers a panic.
The security advisory and the patch commit 7823e9af8c20e9fcfb5360f5eafd891c457ebccf make it clear that the panic occurs when linearize returns an empty set of types. The fix involves adding a check to ensure this vector is not empty before proceeding.
The entry point for this vulnerability is the alloy_dyn_abi::eip712::TypedData::eip712_signing_hash function. This is the user-facing function that takes the TypedData as input. During its execution, it calls the vulnerable encode_type function, leading to the crash. Therefore, both eip712_signing_hash and encode_type are key functions that would appear in a runtime profile during exploitation.