Open hats-bug-reporter[bot] opened 1 year ago
"convince the owner admin to addImpl" - the owner of vaultsRegistry is DAO, so every addImpl
call will go through the DAO voting.
"convince the owner admin to addImpl" - the owner of vaultsRegistry is DAO, so every
addImpl
call will go through the DAO voting.
emm the core issue that report wants to convey is the function removeVaultImpl does not really do what it is supposed to do
it is supposed to block calling crucial function from the outdated / rogue implementation
also even every addImpl is approved by DAO and and the new implementation is added
the vault admin is still decline the upgrade as I pointed out in the report
If we refers to the severity level docs
this is at least low severity issue
Issues where the behavior of the contracts differs from the intended behavior (as described in the docs and by common sense), but no funds are at risk.
but I think the medium impact fits well
Attacks that make essential functionality of the contracts temporarily unusable or inaccessible
in the case even when the removed implementation still have access to important function that such burn share or harvest and even when the vault admin declines to upgrade the implementation
@tsudmi
hi @JeffCX
The harvest
, approve validator
are isolated to the vault, so it doesn't affect other vaults or osETH. The burn osToken shares
we can't block because it means user never gets his ETH back if something happens to DAO. The only functionality that won't be accessible is minting new osETH.
Github username: @JeffCX Submission hash (on-chain): 0x81d91aac20e83b7d1890e395d9a9290f8395bdd3d077c66461f921ac4ec696f8 Severity: medium
Description: Description\
Rogue implementation that are blocklist can still perform damaging action
Attack Scenario\
In the current implementation, the high level access control is done by the contract VaultRegistry
we can notice a few things, first, once a vault is added, it cannot by removed
the only owner admin can remove a vault implementation by set the implementation to false
first, the admin needs to set the addVaultImpl to true, whitelisting a implementation
then the vault implementation can be upgraded
but consider that the vault implementation is upgradable, and the admin is the vault admin, not neccessarily the trusted, because the vault is deployed in the factory contract and there is no minimum captial commitment for the vault admin, so the cost of perform rogue action is none
If we take a look at the same validation
only when mintingShares, the validation validate both vault and the implementation
the rest of the code when calling sensetive function such as harvest, approve validator, even burning OS shares does not check if the implementation logic is already removed and blocklisted
even the owner call removeVaultImpl, the removed implementation can still burn OS share / call harvest / approve validator
the vault admin should not have the power to upgrade the implementation contract after call
because the vault admin is permissionless, the protocol owner can create a new implementation and tell the vault admin to upgrade, but if the vault admin refuses to do so, the owner can do nothing, even he remove the implementation, the rogue / outdated implementation can still perform senstive action outlined above
In the worst worst worst worst case,
consider the case
https://rekt.news/tornado-gov-rekt/
Attachments
described above
do not let vault admin that can be anyone upgrade the implementation contract
whenever, the validation
is called
add the check
as well to make sure the removeImpl function call takes proper effects