This repository has been archived by the owner on May 26, 2023. It is now read-only.
hickuphh3 - Broken Operator Mechanism: Just 1 malicious / compromised operator can permanently break functionality #46
Labels
Has Duplicates
A valid issue with 1+ other issues describing the same vulnerability
Medium
A valid Medium severity issue
Reward
A payout will be made for this issue
Sponsor Confirmed
The sponsor acknowledged this issue is valid
Will Fix
The sponsor confirmed this issue will be fixed
hickuphh3
medium
Broken Operator Mechanism: Just 1 malicious / compromised operator can permanently break functionality
Summary
Operator access control isn't sufficiently resilient against a malicious or compromised actor.
Vulnerability Detail
I understand that we can assume all privileged roles to be trusted, but this is about the access control structure for the vault operators. The key thing here is that you can have multiple operators who can add or remove each other. As the saying goes, "you are as strong as your weakest link", so all it required is for 1 malicious or compromised operator to permanently break protocol functionality, with no possible remediation as he's able to kick out all other honest operators, including himself
The vault operator can do the following:
alchemist
contract to any address (except null) of his choosing. He can therefore permanently brick the claiming and liquidation process, resulting in the permanent locking of token holders' funds in Alchemix.alchemist
contract every timeregister_deposit
is called, and with the fact that anyone can settle the contract, the malicious operator is able to do the following atomically:shares_issued
value when thedepositUnderlying()
function is calledImpact
DoS / holding the users' funds hostage.
Code Snippet
https://github.com/sherlock-audit/2023-02-fair-funding/blob/main/fair-funding/contracts/Vault.vy#L292-L300
https://github.com/sherlock-audit/2023-02-fair-funding/blob/main/fair-funding/contracts/Vault.vy#L589-L614
Tool used
Manual Review
Recommendation
Add an additional access control layer on top of operators: an
owner
that will be held by a multisig / DAO that's able to add / remove operators.The text was updated successfully, but these errors were encountered: