in the contract GovernorCharlie.sol in function executeTransaction Nonces are not used in the signature
A nonce can prevent an old value from being used when a new value exists. Without one, two transactions submitted in one order, can appear in a block in a different order
Lines of code
https://github.com/code-423n4/2023-07-amphora/blob/179384321c36b669f48bc0485bbc1f807fba8fac/core/solidity/contracts/governance/GovernorCharlie.sol#L337
Vulnerability details
Impact
in the contract
GovernorCharlie.sol
in functionexecuteTransaction
Nonces are not used in the signatureA nonce can prevent an old value from being used when a new value exists. Without one, two transactions submitted in one order, can appear in a block in a different order
Proof of Concept
here is instance: https://github.com/code-423n4/2023-07-amphora/blob/179384321c36b669f48bc0485bbc1f807fba8fac/core/solidity/contracts/governance/GovernorCharlie.sol#L337
Tools Used
manually/ vs code
Recommended Mitigation Steps
Include a nonce in what is signed
instead of
Assessed type
Governance