ERC‑20 interactions should be checked for success. Many tokens either (a) revert on failure, or (b) return false instead of reverting (e.g., USDT‑style). Robust contracts use OpenZeppelin’s SafeERC20 wrappers (which handle both behaviors) or explicitly require the boolean return value to be true.
Stratax calls transfer, transferFrom, and approve on ERC‑20s without verifying their return values and without SafeERC20. If a token returns false (no revert), the function continues as if the transfer/approval succeeded, causing downstream logic to execute with incorrect balances/allowances.
Likelihood: Medium
Non‑standard ERC20s that return false (not revert) are common; operationally, tokens like USDT require zero‑reset approvals and return false in some flows. These are routinely used as collateral/route assets.
Allowance patterns can fail silently if a token requires an approval reset to zero first; without checking the return value, the contract assumes success.
Impact: Medium
Operational DoS / late reverts: If transferFrom of user collateral returns false, the contract proceeds, but later Aave supply fails (insufficient balance), wasting gas and complicating incident triage.
Funds stuck / inconsistent state: recoverTokens may “succeed” while doing nothing, leaving assets stranded in the contract; failed approvals can leave swaps or repays under‑funded.
Conceptual pseudocode:
Use SafeERC20 everywhere and follow allowance best practices. Replace direct calls with safeTransfer, safeTransferFrom, safeApprove/safeIncreaseAllowance, and reset allowances to zero when required.
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.
The contest is complete and the rewards are being distributed.