This repository was archived by the owner on Mar 2, 2025. It is now read-only.
Rhaydden - Missing update functionality for compatibilityFallback
in setParam
function
#43
Labels
Excluded
Excluded by the judge without consulting the protocol or the senior
Non-Reward
This issue will not receive a payout
Sponsor Confirmed
The sponsor acknowledged this issue is valid
Will Fix
The sponsor confirmed this issue will be fixed
Rhaydden
Medium
Missing update functionality for
compatibilityFallback
insetParam
functionSummary
The
RumpelWalletFactory
contract has no ability to update thecompatibilityFallback
address after deployment. This could lead to issues if the fallback handler needs to be changed due to upgrades or bugs.Vulnerability Detail
In the
RumpelWalletFactory.sol
, thecompatibilityFallback
address is set during the contract's construction. However, thesetParam
function, which allows the owner to update various parameters, does not include an option to update thecompatibilityFallback
address. This omission technically means that once the contract is deployed, thecompatibilityFallback
address cannot be changed.Impact
This will render the contract useless. According to Sherlock docs:
The inability to update the
compatibilityFallback
address could result in the need to redeploy the entire contract entirely if the fallback handler needs to be changed. This could be due to an upgrade, a bug in the fallback handler, or other issues.Code Snippet
https://github.com/sherlock-audit/2024-07-sense-points-marketplace/blob/main/rumpel-wallet/src/RumpelWalletFactory.sol#L85-L93
Tool used
Manual Review
Recommendation
Add an option to update the
compatibilityFallback
address in thesetParam
function:function setParam(bytes32 what, address data) external onlyOwner { if (what == "PROXY_FACTORY") proxyFactory = ISafeProxyFactory(data); else if (what == "SAFE_SINGLETON") safeSingleton = data; else if (what == "RUMPEL_MODULE") rumpelModule = data; else if (what == "RUMPEL_GUARD") rumpelGuard = data; else if (what == "INITIALIZATION_SCRIPT") initializationScript = data; + else if (what == "COMPATIBILITY_FALLBACK") compatibilityFallback = data; // Add this line else revert UnrecognizedParam(what); emit ParamChanged(what, data); }
The text was updated successfully, but these errors were encountered: