Headline
GHSA-93hq-5wgc-jc82: GovernorCompatibilityBravo may trim proposal calldata
Impact
The proposal creation entrypoint (propose
) in GovernorCompatibilityBravo
allows the creation of proposals with a signatures
array shorter than the calldatas
array. This causes the additional elements of the latter to be ignored, and if the proposal succeeds the corresponding actions would eventually execute without any calldata. The ProposalCreated
event correctly represents what will eventually execute, but the proposal parameters as queried through getActions
appear to respect the original intended calldata.
Patches
This issue has been patched in v4.8.3.
Workarounds
Ensure that all proposals that pass through governance have equal length signatures
and calldatas
parameters.
Package
npm @openzeppelin/contracts (npm)
Affected versions
>= 4.3.0, < 4.8.3
Patched versions
4.8.3
npm @openzeppelin/contracts-upgradeable (npm)
>= 4.3.0, < 4.8.3
4.8.3
Description
Impact
The proposal creation entrypoint (propose) in GovernorCompatibilityBravo allows the creation of proposals with a signatures array shorter than the calldatas array. This causes the additional elements of the latter to be ignored, and if the proposal succeeds the corresponding actions would eventually execute without any calldata. The ProposalCreated event correctly represents what will eventually execute, but the proposal parameters as queried through getActions appear to respect the original intended calldata.
Patches
This issue has been patched in v4.8.3.
Workarounds
Ensure that all proposals that pass through governance have equal length signatures and calldatas parameters.
References
- GHSA-93hq-5wgc-jc82
- https://nvd.nist.gov/vuln/detail/CVE-2023-30542
- OpenZeppelin/openzeppelin-contracts@8d633cb
- https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v4.8.3
frangio published to OpenZeppelin/openzeppelin-contracts
Apr 13, 2023
Published by the National Vulnerability Database
Apr 16, 2023
Published to the GitHub Advisory Database
Apr 20, 2023
Reviewed
Apr 20, 2023
Related news
OpenZeppelin Contracts is a library for secure smart contract development. The proposal creation entrypoint (`propose`) in `GovernorCompatibilityBravo` allows the creation of proposals with a `signatures` array shorter than the `calldatas` array. This causes the additional elements of the latter to be ignored, and if the proposal succeeds the corresponding actions would eventually execute without any calldata. The `ProposalCreated` event correctly represents what will eventually execute, but the proposal parameters as queried through `getActions` appear to respect the original intended calldata. This issue has been patched in 4.8.3. As a workaround, ensure that all proposals that pass through governance have equal length `signatures` and `calldatas` parameters.