Skip to content
Heist/ feed
Back to feed
High

GovernorVotesQuorumFraction updates to quorum may affect past defeated proposals in @openzeppelin/contracts

Type: advisorySources: OSV

OpenZeppelin Contracts is a library for secure smart contract development. This issue concerns instances of Governor that use the module `GovernorVotesQuorumFraction`, a mechanism that determines quorum requirements as a percentage of the voting token's total supply. In affected instances, when a proposal is passed to lower the quorum requirements, past proposals may become executable if they had been defeated only due to lack of quorum, and the number of votes it received meets the new quorum requirement. Analysis of instances on chain found only one proposal that met this condition, and we are actively monitoring for new occurrences of this particular issue. This issue has been patched in v4.7.2. Users are advised to upgrade. Users unable to upgrade should consider avoiding lowering quorum requirements if a past proposal was defeated for lack of quorum.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2022-31198
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 17:39 UTC · Revision 1

Source evidence

GovernorVotesQuorumFraction updates to quorum may affect past defeated proposals in @openzeppelin/contracts

core-osv · Original source

Published 1 Aug 2022, 21:00 UTC

OpenZeppelin Contracts is a library for secure smart contract development. This issue concerns instances of Governor that use the module `GovernorVotesQuorumFraction`, a mechanism that determines quorum requirements as a percentage of the voting token's total supply. In affected instances, when a proposal is passed to lower the quorum requirements, past proposals may become executable if they had been defeated only due to lack of quorum, and the number of votes it received meets the new quorum requirement. Analysis of instances on chain found only one proposal that met this condition, and we are actively monitoring for new occurrences of this particular issue. This issue has been patched in v4.7.2. Users are advised to upgrade. Users unable to upgrade should consider avoiding lowering quorum requirements if a past proposal was defeated for lack of quorum.

osv:CVE-2022-31198
Complete source record
{
  "id": "5135658e33e22ae3083cc2d88a213e19aed6796e815e43ffa7c5a1ea1cd84b72",
  "url": "https://osv.dev/vulnerability/CVE-2022-31198",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "GovernorVotesQuorumFraction updates to quorum may affect past defeated proposals in @openzeppelin/contracts",
    "summary": "OpenZeppelin Contracts is a library for secure smart contract development. This issue concerns instances of Governor that use the module `GovernorVotesQuorumFraction`, a mechanism that determines quorum requirements as a percentage of the voting token's total supply. In affected instances, when a proposal is passed to lower the quorum requirements, past proposals may become executable if they had been defeated only due to lack of quorum, and the number of votes it received meets the new quorum requirement. Analysis of instances on chain found only one proposal that met this condition, and we are actively monitoring for new occurrences of this particular issue. This issue has been patched in v4.7.2. Users are advised to upgrade. Users unable to upgrade should consider avoiding lowering quorum requirements if a past proposal was defeated for lack of quorum.",
    "evidence": "osv:CVE-2022-31198",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2022-31198",
      "aliases": [
        "CVE-2022-31198",
        "GHSA-xrc4-737v-9q75"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/openzeppelin/openzeppelin-contracts",
              "type": "GIT",
              "events": [
                {
                  "introduced": "1d2e15fbd7314f4f60b47d97d9b852aacd5404f7"
                },
                {
                  "fixed": "64e48203cecad94f02de9891ecdeed4d629c6dae"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "4.3.0"
                      },
                      {
                        "fixed": "4.7.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "cpe": "cpe:2.3:a:openzeppelin:contracts:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "4.3.0"
                      },
                      {
                        "fixed": "4.7.2"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:openzeppelin:contracts_upgradeable:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "4.3.0"
                      },
                      {
                        "fixed": "4.7.2"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            },
            {
              "repo": "https://github.com/openzeppelin/openzeppelin-contracts-upgradeable",
              "type": "GIT",
              "events": [
                {
                  "introduced": "618d129b52c14aea8d37a413e4c8b643439abe73"
                },
                {
                  "fixed": "12ad9ea7c8e8e78f6eba9ad71ad156645d3c5b4c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:openzeppelin:contracts_upgradeable:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "4.3.0"
                      },
                      {
                        "fixed": "4.7.2"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-31198.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:21.578110910Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/31xxx/CVE-2022-31198.json",
        "https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-xrc4-737v-9q75",
        "https://nvd.nist.gov/vuln/detail/CVE-2022-31198",
        "https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3561"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-682"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/31xxx/CVE-2022-31198.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2022-31198",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 487830,
  "published_at": "2022-08-01T21:00:17+00:00"
}