Closed code423n4 closed 1 year ago
Duplicate of #14
thereksfour marked the issue as duplicate of #14
thereksfour marked the issue as satisfactory
Are there actual proxied tokens that implement proxies call like this?
let result := call(gas(), _impl, callvalue(), ptr, add(calldatasize(), 32), 0, 0)
Don't proxies normally use delegatecall
? Looked at https://github.com/d-xo/weird-erc20#multiple-token-addresses but it doesn't have an example of a token that uses it.
Lines of code
https://github.com/code-423n4/2023-05-party/blob/f6f80dde81d86e397ba4f3dedb561e23d58ec884/contracts/party/PartyGovernanceNFT.sol#L293
Vulnerability details
Impact
Users can withdraw more funds if the party has tokens with multiple addresses.
Proof of Concept
Users can burn their party NFTs and take the share of the party's funds.
Users can input custom token addresses and receive them according to their shares.
Btw there are some tokens with multiple addresses and the party might contain such tokens while executing several proposals like
ArbitraryCallsProposal
.In this case, a malicious user might input both addresses for one token and charge more funds than he should.
Tools Used
Manual Review
Recommended Mitigation Steps
I think we should add more validations in
rageQuit()
like pre/post balance checking.Assessed type
ERC20