impact: High
Likelihood: High
In K1Validator::_isContract()
and Nexus::upgradeToAndCall()
, the extcodesize opcode is used to check if an address is a contract or not. This check can be bypassed by calling any function that uses extcodesize in the constructor.
Bypassing the K1Validator::_isContract()
function or the extcodesize opcode can allow a malicious contract to be the caller, potentially leading to various security vulnerabilities.
Run the following code in the test folder:
Use a more robust method to check for contract addresses, such as verifying the code hash, which is harder to spoof. Additionally, ensure that critical functions are protected by additional security measures like access control mechanisms.
Invalid [known issue [Medium-3]](https://github.com/Cyfrin/2024-07-biconomy/issues/1)
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.