The computeEscrowAddress()
function in the EscrowFactory contract does not check to see if the bytecode is actually the bytecode of a valid escrow contract. This means that an attacker could deploy a malicious escrow contract by passing in malicious bytecode to the computeEscrowAddress() function.
The computeEscrowAddress()
function in the EscrowFactory contract is vulnerable to the following attack:
Deploy the EscrowFactory contract.
Obtain the address of the EscrowFactory contract.
Create malicious bytecode for an escrow contract.
Call the computeEscrowAddress()
function with the malicious bytecode.
The computeEscrowAddress()
function will return the address of the malicious escrow contract.
If an attacker is able to deploy a malicious escrow contract, they could steal the funds that are held in the escrow contract.
Manual code review
The computeEscrowAddress()
function should be updated to check to see if the bytecode is actually the bytecode of a valid escrow contract.
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.