QA Report #96
Labels
bug
Something isn't working
duplicate
This issue or pull request already exists
QA (Quality Assurance)
Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax
Lines of code
https://github.com/code-423n4/2022-02-hubble/blob/ed1d885d5dbc2eae24e43c3ecbf291a0f5a52765/contracts/VUSD.sol#L11-L11
Vulnerability details
Use of Upgradeable Proxy Contract Structure allows the logic of the contract to be arbitrarily changed.
This allows the proxy admin to perform malicious actions e.g., taking funds from users' wallets up to the allowance limit.
This action can be performed by the malicious/compromised proxy admin without any restriction.
Considering that the purpose of this particular contract is for a token, we believe the smart contract should not be structured as an upgradeable contract.
PoC
Given:
USDC
VUSD
spending herUSDC
andmintWithReserve()
VUSD
;VUSD
spending hisUSDC
andmintWithReserve()
VUSD
;upgradeToAndCall()
on the proxy contract and set a malicious contract asnewImplementation
and stolen all the WBTC in Alice's and Bob's wallets;Severity
A smart contract being structured as an upgradeable contract alone is not usually considered as a high severity risk. But given the severe impact (funds in users' wallets got stolen), with the PoC above, once the proxy admin is compromised, users' funds can be at risk. Therefore, we mark it as a
High
severity issue.Recommendation
The text was updated successfully, but these errors were encountered: