# VetoProposal: User can veto multiple times so every proposal can be vetoed by any user that has a small amount of votes

VetoProposal.voteToVeto lacks a per-user dedup check, letting a holder of ~1% voting power call it repeatedly to reach the veto threshold and defeat any proposal.

- Payout: Contest reward
- Severity: high
- Program: PartyDAO
- Credited: HollaDieWaldfee
- Disclosed: 2023-06-23
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2023-04-party-findings/issues/2
- Library page: https://bugbountylibrary.com/r/c4%3A2023-04-party%3AH-08
- Tags: domain:web3 impact:dos impact:integrity kind:contest platform:code4rena sev:high tech:solidity vuln:business-logic vuln:governance

**Target:** VetoProposal.sol voteToVeto governance contract
**Root cause:** voteToVeto increments vetoVotes by the caller's voting power without recording that the caller already voted, so the same address can contribute repeatedly.
**Steps:**
1. Deploy party with totalVotingPower=3e18 and passThresholdBps=5100 (51%).
2. voter1 holds 1e18 voting power (~33%).
3. Call `vetoProposal.voteToVeto(party, proposalId, 0)` as voter1; vetoVotes=1e18, proposal still Voting.
4. Call `vetoProposal.voteToVeto(party, proposalId, 0)` again as voter1; vetoVotes reaches threshold, proposal becomes Defeated.
**How found:** Code review of VetoProposal.sol: noticed voteToVeto only checks proposal status and adds voting power, with no hasVoted mapping, unlike standard governance vote dedup.
**Exploitation:** A minority voter repeatedly calls voteToVeto on the same proposal until vetoVotes crosses passThresholdBps, defeating proposals they oppose; a griefer can veto every proposal and halt party operations.
**Escalation:** Any user with a small vote share can veto all proposals, effectively blocking all party governance actions.
**Insight:** When auditing governance/veto modules, check that every vote-accumulating function keys dedup on (proposal, voter); a missing hasVoted mapping turns a minority share into a threshold-crossing repeat vote.
