The newEscrow function inside the EscrowFactory does not check if the arbiter address is the same as the buyer or seller address. If the arbiter address would be set to the same as one of these (intentionally or unintentionally), a contract in which one party has total control over the other would be created.
If intentionally or unintentionally the arbiter address is set to the same as the buyer or seller address, an Escrow contract is created in which one party has total control over the funds. This party would then be able to initiate a dispute and resolve it on their own, which allow them to steal all funds.
One party would potentially lose all funds and there would not be any reason for using the smart contract anymore as one party needs to fully trust the other one to pay.
Manual Review, Foundry, VSCode
Implement a check if any of these addresses equal and revert if so.
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.