liquidateAccounts
meant to be called by the Offchain keepers only, currently lacks access control mechanism, hence could be called by anyone. This opens up a room for DOS attack as malicious actors could provide a very lengthy array of accountsIds
.
Ideally the function is meant to be called by the Offchain keepers who passes in the accountsIds
into the function and then iterates over each element in order to determine which accounts is liquidatable.
However, Malicious actors could provide very lengthy array of accountsIds
leading to unbounded loop iterations and out of gas issues.
When malicious actors supply a very lengthy amount of data, they could exhaust the block gas limit and technically DOS the Offchain keepers who are said to be Chainlink Automation compatible contract or allowlisted EOA that has the permission of liquidating.
DOS and gas grifing: The offChain keepers could be DOSed by malicious actors by exceeding the block gas limit.
Service Disruption: function could be called by anyone, although there no economic benefit for this.
Increased Costs: Repeatedly encountering out-of-gas errors can increase costs for offChain keepers, as they have to pay for failed transactions.
Manual Review
Add access control mechanisms to the function and since the offChain keepers are said to be trusted, there should be no need to check for large input data
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.