The MondrianWallet2 contract has a critical vulnerability in the _authorizeUpgrade function. The lack of access control in this function allows any user to upgrade the smart contract to a malicious implementation, potentially compromising the contract's integrity and security.
The _authorizeUpgrade
function is designed to authorize upgrades to the contract's implementation. However, this function lacks access control, meaning it does not restrict who can call it. This allows any user to execute the upgradeToAndCall
function and change the contract's implementation to a malicious contract.
Proof of Concept
Test passed even though the upgradeToAndCall
function wasn't called by the owner
The lack of access control in the _authorizeUpgrade function enables any user to upgrade the smart contract with malicious code. This vulnerability can lead to loss of funds thus compromising contract integrity.
Manual review
Implement access control for _authorizeUpgrade
function
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.