Collateral.Data
information is saved in two locations. Protocol access this information from both places but admin can update only one of them resulting in a DoS for admin rights.
Collateral data is handled by Collateral library and saved at COLLATERAL_LOCATION
storage location. It is configured by MarketMakingEngineConfigurationBranch ::configureCollateral function and can be called multiple times by admin
.
Same data structure is stored is Vault leaf and is part of the bigger vault's data struct stored at VAULT_LOCATION
storage location.
It is initialized when the vault is created. If the vault exist this function can't be called again. The vault's self.collateral
data can't be updated.
Two critical information are accessed from colllateral.Data
stored in vault
:
isEnable
status in VaultRouterBranch::initiateWithdrawal and deposit
priceAdapter
in VaultRouterBranch::getVaultCreditCapacity and StabilityBranch::initiateSwap
In case admin wants to update priceAdapter
(eg. in case of a vulnerability in existing adaptor) or to disable the collateral, he can't.
The protocol can reach a situation where an asset is disabled in market-making-engine
(via configureCollateral
) while is still active in a Vault.
Same for priceAdapter
, it can have an adapter in a specific vault and a different adapter to be configured in engine for same asset.
In case of a vulnerable adaptor the vault must be shut down and re-created.
Key vault parameters are inaccessible for admin to update, resulting the relaunch the vault and the associated hassle.
There are two options. Either remove Collateral.data
from Vault structure and update the code where required to interogate collateral data only from COLLATERAL_LOCATION
.
Or, at least, add a new function (or update existing Vault::update
) to allow admin to update these two parameters.
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.