CVE-2021-39167 TimelockController vulnerability in OpenZeppelin Contracts

Critical 10.0 Published Updated

An actor with the executor role in OpenZeppelin TimelockController can escalate privileges, requiring revocation of untrusted executor roles.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2021-39167?

CVE-2021-39167 is a critical vulnerability in openzeppelin-contracts, published on 26 Aug 2021. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

OpenZepplin is a library for smart contract development. In affected versions a vulnerability in TimelockController allowed an actor with the executor role to escalate privileges. Further details about the vulnerability will be disclosed at a later date. As a workaround revoke the executor role from accounts not strictly under the team's control. We recommend revoking all executors that are not also proposers. When applying this mitigation, ensure there is at least one proposer and executor remaining.

Weakness: CWE-269

Which versions are affected by CVE-2021-39167?

4 open source packages ship an affected version, including @openzeppelin/contracts. It affects 1 product.

PackageAffectedFixed in
@openzeppelin/contracts npmFrom 3.3.03.4.2
@openzeppelin/contracts npmFrom 3.3.03.4.2
@openzeppelin/contracts npmFrom 4.0.04.3.1
@openzeppelin/contracts npmFrom 4.0.04.3.1

Products include Openzeppelin Contracts.

How do I fix CVE-2021-39167?

Upgrade @openzeppelin/contracts to a fixed version for your release line: 3.4.2 or 4.3.1.

Is CVE-2021-39167 being exploited?

There is no known exploitation of CVE-2021-39167 in the wild and no public exploit code.

Sources

Also known as GHSA-fg47-3c2x-m2wr.

Is CVE-2021-39167 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free