approve
function in the provided smart contract code lacks proper access control, allowing any user to authorize a token manager to spend tokens on behalf of the CapitalPool
contract. This vulnerability could enable malicious actors to control the tokens without permission, leading to potential loss of funds.approve
function does not have any access control checks, such as requiring a specific role or ownership verification, to restrict who can call the function. As a result, any user can invoke this function and approve a token manager to spend an unlimited amount of tokens on behalf of the CapitalPool
contract. This could be exploited by an attacker to drain tokens from the contract.CapitalPool
contract's token balance. This would have severe financial implications, including losing user funds and trust in the contract.onlyOwner
or onlyTokenManager
, to restrict the execution of the approve
function to authorized roles only.This is at most low severity, even though giving max approvals shouldn't be permisionless, the respective tokenManager address is retrieved from the TadleFactory contract whereby the trusted guardian role is responsible for deploying such contracts as seen [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/factory/TadleFactory.sol#L68). Since the user still has to go through the PreMarkets/DeliveryPlace contracts to perform market actions, this max approval cannot be exploited.
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.