Tadle

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

Protocol Cannot Work with Fee-on-Transfer Tokens

Summary

The protocol is incompatible with fee-on-transfer tokens, which deduct fees during transactions. This results in discrepancies between the expected and actual amounts deposited into the capital pool and withdrawn by users.

Vulnerability Detail

Fee-on-transfer tokens deduct a fee whenever tokens are transferred, causing the recipient to receive less than the original amount sent.

Let's analyze the tillIn function. When an amount of tokens is deposited, the protocol assumes that the full amount will be transferred into the capital pool without accounting for the fees deducted during the transfer. Consequently, the capital pool will receive a lesser amount than expected.

This issue also arises in the withdraw function.

https://github.com/Cyfrin/2024-08-tadle/blob/main/src/core/TokenManager.sol#L137-L189

Impact

  • The capital pool will receive fewer tokens than those deposited.

  • Users will receive a lesser amount than what they intended to withdraw.

Tool Used

Manual Review

Recommendation

Implement a check for balanceBefore and balanceAfter to account for fees during token transfers.

Updates

Lead Judging Commences

0xnevi Lead Judge 11 months ago
Submission Judgement Published
Validated
Assigned finding tags:

finding-TokenManager-FOT-Rebasing

Valid medium, there are disruptions to the ability to take market actions. The following functions will be disrupted without the possibiliy of reaching settlement, since the respective offers cannot be created/listed regardless of mode when transferring collateral token required to the CapitalPool contract or when refunding token from user to capital pool during relisting. So withdrawal is not an issue - `createOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L96-L102) - `listOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L355-L362) - `relistOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L515-L521) - `createTaker()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L831-L836) I believe medium severity is appropriate although the likelihood is high and impact is medium (only some level of disruption i.e. FOT tokens not supported and no funds at risk)

Support

FAQs

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