Tadle

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

Unrestricted Access to approve Function

[H-1] Unrestricted Access to approve Function

Description:

The approve function can be called by anyone, allowing any user to approve the protocol pool for withdrawals.

Impact:

Any user can approve the protocol pool for withdrawal for themselves, potentially leading to unauthorized withdrawals.

Proof of Concept:

function approve(address tokenAddr) external {
address tokenManager = tadleFactory.relatedContracts(
RelatedContractLibraries.TOKEN_MANAGER
);
(bool success, ) = tokenAddr.call(
abi.encodeWithSelector(
APPROVE_SELECTOR,
tokenManager,
type(uint256).max
)
);
if (!success) {
revert ApproveFailed();
}
}

Recommended Mitigation:

Add access control to restrict who can call the approve function, also make TokenManager to be the only one that can call it

Updates

Lead Judging Commences

0xnevi Lead Judge 11 months ago
Submission Judgement Published
Validated
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.