Summary
An inherent risk exists when an escrow contract is established without an arbiter. If the buyer decides against payment to the seller for any reason, funds can remain permanently locked in the escrow contract, due to a lack of time-lock or expiration provision.
Vulnerability Details
When an escrow contract is deployed without an arbiter set, the only way to unlock the funds is by calling the confirmReceipt()
function, a power held exclusively by the buyer. There are currently no provisions to handle a situation where the buyer refuses payment to the seller.
Additionally, a scenario may arise where the buyer fails to fulfill their contractual obligations to the seller. In such an instance, and without an arbiter, there exists no method to unlock the funds without involuntarily transferring them to the buyer.
Impact
This vulnerability could lead to funds being indefinitely locked in the escrow contract or even transferred to the buyer, irrespective of whether they've met the agreement's terms.
Tools Used
Manual Review
Recommendations
Introduce a time-lock mechanism which would allow funds to be unlocked under certain conditions, or enforce the inclusion of an arbiter during the escrow contract setup as a mandatory requirement.
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.