The Escrow contract does not have any access control restrictions. This means that anyone can call any function on the contract, regardless of their role in the transaction. This could allow an attacker to steal funds from the escrow, or to initiate a dispute even if they are not the buyer or seller.
The EscrowFactory contract does not check the validity of the salt parameter. This means that an attacker could provide a malicious salt value that would cause the Escrow contract to be deployed to an incorrect address. This could allow the attacker to steal the funds that are deposited into the escrow.
The EscrowFactory contract does not require the token contract to be approved before calling the newEscrow() function. This means that an attacker could call the newEscrow() function without first approving the token contract to spend the price amount. This could allow the attacker to steal the funds from the escrow.
Here are some fixes vulnerabilities:
The Escrow contract should have access control restrictions that only allow the buyer, seller, and arbiter to call certain functions.
The EscrowFactory contract should check the validity of the salt parameter.
The EscrowFactory contract should require the token contract to be approved before calling the newEscrow() function.
By addressing these vulnerabilities, you can help to protect your users' funds and ensure that the escrow contract is secure.
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.