Tadle

Tadle
DeFi
30,000 USDC
View results
Submission Details
Severity: low
Invalid

Dangerous max approval on transfers, can result in drained capital pool in case of an exploit

Summary

When tokens are transfered from the protocol's funds holder (CapitalPool), the approved amount is settled to max value.

function approve(address tokenAddr) external {
...
(bool success, ) = tokenAddr.call(
abi.encodeWithSelector(
APPROVE_SELECTOR,
tokenManager,
@> type(uint256).max
)
);
...
}

Vulnerability Details

Having hardcoded type(uint256).max approval amount for transfers is dangerous. This introduces a risk in case the protocol contains a bug, where an exploiter can steal funds from the contract. This will allow him to drain an unlimited amount of tokens.

Impact

  • Low, as it requires a critical exploit to happen, which will allow transfer of funds from Capital pool

Tools Used

Manual Review

Recommendations

Allow only a claimable amount to be approved, instead of max value

Updates

Lead Judging Commences

0xnevi Lead Judge
10 months ago
0xnevi Lead Judge 10 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Appeal created

dimah7 Submitter
10 months ago
0xnevi Lead Judge
10 months ago
0xnevi Lead Judge 9 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

finding-CapitalPool-approve-missing-access-control

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.

Support

FAQs

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