Closed sherlock-admin closed 1 year ago
Escalate for 10 USDC
I do believe this is a valid issue. As explained in the report, the protocol distributes free money to users, i.e., the protocol distributes more funds than what originally came in, which is a major accounting issue. The report also explains the scenario & steps for the issue to occur.
I would like to request the judge and sponsors to review this report again. The severity can debated between high & medium but the issue should be valid. Thanks.
Escalate for 10 USDC
I do believe this is a valid issue. As explained in the report, the protocol distributes free money to users, i.e., the protocol distributes more funds than what originally came in, which is a major accounting issue. The report also explains the scenario & steps for the issue to occur.
I would like to request the judge and sponsors to review this report again. The severity can debated between high & medium but the issue should be valid. Thanks.
You've created a valid escalation!
To remove the escalation from consideration: Delete your comment.
You may delete or edit your escalation comment anytime before the 48-hour escalation window closes. After that, the escalation becomes final.
This amount of 0.000000777777777777 is indeed the user's balance, and it is within their rights to withdraw it. However, due to decimal limitations in USDC, they cannot withdraw it. It's not another user's fund, nor is it free money.
Result: Low Unique Considering this issue a valid low as the impact is not significant enough based on the above comment.
AkshaySrivastav
high
Dust amount due to 18 decimals precision can be combined to pull out whole token amounts.
Summary
Dust amount due to 18 decimals precision and token decimals precision conversion can be combined together to pull out whole token amounts.
Vulnerability Detail
AccountFacetImpl.sol
The protocol operates on 18 decimal precision values. So when 100 USDC (with 6 decimals) are deposited, the balances and allocated balances of user are represented as 100e18.
Consider this scenario:
balance
in the symmetrical protocol.0.000001
USDC.The issue here is that the protocol leaves dust balance into user balance accounting, these dust values can be combined together to claim free money from the protocol. Moreover, the free money will come from the USDCs deposited by other users into the protocol.
While this accounting issue may seem minute, an incentivized attack to collect dust amounts across all users accrued over a long period of time can cause serious dents in protocol accounting. This can cause bank run on the protocol in which the users who claim at last suffer major losses.
Impact
Explained above
Code Snippet
https://github.com/sherlock-audit/2023-06-symmetrical/blob/main/symmio-core/contracts/facets/Account/AccountFacetImpl.sol#L27-L39
Tool used
Manual Review
Recommendation
Consider resetting user balances to 0 when their balance goes below a particular threshold. Also it should always be validated that a protocol must never push out more funds than amount of funds coming in (like always round in favor of protocol).