The contract lacks a mechanism to change owners, which could render the wallet unusable if one of the owners becomes unresponsive or malicious. Thereby making funds stuck in the contract.
The owner1
and owner2
addresses are set during contract deployment and cannot be updated afterward. If one of the owners loses access to their private key or refuses to approve transactions, the wallet could become permanently locked.
Loss of access to funds in the wallet.
Inability to execute transactions if one owner is uncooperative.
Manual code review.
Introduce a mechanism that allows the remaining active owner to propose a new owner if the other remains inactive for a specified period.
Solution: Add a "Timeout-Based Recovery" Function
Introduce a lastActivity timestamp for both owners.
Allow a waiting period (e.g., 30-90 days).
Add time stamp to Transaction struct
Make sure last transaction was inactive beyond the period and not executed yet.
If an owner remains inactive beyond this period, the other owner can propose a replacement.
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.