40,000 USDC
View results
Submission Details
Severity: low
Valid

The EscrowFactory should not allow to set the buyer or seller as arbiter as this would give one party total control

Summary

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.

Vulnerability Details

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.

Impact

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.

Tools Used

Manual Review, Foundry, VSCode

Recommendations

Implement a check if any of these addresses equal and revert if so.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.