The LikeRegistry
contract creates a new MultiSigWallet
for each matched user pair in the matchRewards
function. However, the contract address is not stored, making it impossible for users to retrieve or interact with their MultiSigWallet instance. As a result, any ETH sent to the contract becomes permanently locked and inaccessible, leading to a complete loss of funds for the users.
In LikeRegistry.sol
, the matchRewards
function creates a new MultiSigWallet
contract for the two matched users:
PoC
Steps to Reproduce the Issue:
Alice likes Bob, and Bob likes Alice back, triggering a match.
The matchRewards
function:
Creates a new MultiSigWallet
.
Sends ETH rewards to it.
The address of the MultiSigWallet
is not stored anywhere.
Alice and Bob cannot interact with the wallet to approve or withdraw funds.
Users permanently lose access to their funds.
MultiSigWallet becomes unusable.
ETH sent to the wallet becomes inaccessible forever.
Manual review
To prevent this, store the created MultiSigWallet
address in a mapping, allowing users to retrieve and interact with it.
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelyhood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
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.