Omniscia Myso Finance Audit

Ownable Manual Review Findings

Ownable Manual Review Findings

OEL-01M: Inexistent Clean-Up of Proposed Owner

TypeSeverityLocation
Logical FaultOwnable.sol:L21-L28

Description:

The Ownable::claimOwnership implementation does not properly clean-up the previous proposed _newOwner, permitting them to re-claim ownership repetitively which would in turn emit misleading ClaimedOwnership events.

Impact:

While this exhibit represents undesirable behaviour, its security impact is inexistent as it will solely affect off-chain processes. As such, we consider this exhibit to be of "informational" severity.

Example:

contracts/Ownable.sol
15function proposeNewOwner(address _newOwnerProposal) external {
16 senderCheckOwner();
17 _newOwner = _newOwnerProposal;
18 emit NewOwnerProposed(_owner, _newOwnerProposal);
19}
20
21function claimOwnership() external {
22 if (msg.sender != _newOwner) {
23 revert Errors.InvalidSender();
24 }
25 address _oldOwner = _owner;
26 _owner = _newOwner;
27 emit ClaimedOwnership(_owner, _oldOwner);
28}

Recommendation:

We advise the code to also zero out the _newOwner entry, ensuring that ownership cannot be claimed more than once without proposing first.

Alleviation (c740f7c6b5ebd365618fd2d7ea77370599e1ca11):

The Ownable::claimOwnership function was updated to delete the previous _newOwner, alleviating this exhibit.