CVE-2022-35961 ECDSA signature malleability in OpenZeppelin Contracts
Attackers can bypass signature reuse protections in smart contracts by submitting malleable ECDSA signatures in alternative formats.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2022-35961?
CVE-2022-35961 is a high-severity vulnerability in openzeppelin-contracts, published on 14 Aug 2022. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Official description
OpenZeppelin Contracts is a library for secure smart contract development. The functions `ECDSA.recover` and `ECDSA.tryRecover` are vulnerable to a kind of signature malleability due to accepting EIP-2098 compact signatures in addition to the traditional 65 byte signature format. This is only an issue for the functions that take a single `bytes` argument, and not the functions that take `r, v, s` or `r, vs` as separate arguments. The potentially affected contracts are those that implement signature reuse or replay protection by marking the signature itself as used rather than the signed message or a nonce included in it. A user may take a signature that has already been submitted, submit it again in a different form, and bypass this protection. The issue has been patched in 4.7.3.
Weakness: CWE-354
Which versions are affected by CVE-2022-35961?
4 open source packages ship an affected version, including @openzeppelin/contracts and @openzeppelin/contracts-upgradeable. It affects 2 products.
| Package | Affected | Fixed in |
|---|---|---|
@openzeppelin/contracts npm | From 4.1.0 | 4.7.3 |
@openzeppelin/contracts npm | From 4.1.0 | 4.7.3 |
@openzeppelin/contracts-upgradeable npm | From 4.1.0 | 4.7.3 |
@openzeppelin/contracts-upgradeable npm | From 4.1.0 | 4.7.3 |
Products include Openzeppelin Contracts, Openzeppelin Contracts Upgradeable.
How do I fix CVE-2022-35961?
Upgrade @openzeppelin/contracts to 4.7.3 or later.
Is CVE-2022-35961 being exploited?
There is no known exploitation of CVE-2022-35961 in the wild and no public exploit code.
Other vulnerabilities in openzeppelin-contracts
- CVE-2021-39167 TimelockController vulnerability in OpenZeppelin Contracts
- CVE-2021-39168 TimelockController vulnerability in OpenZeppelin Contracts
- CVE-2021-41264 UUPSUpgradeable vulnerability in OpenZeppelin Contracts
- CVE-2022-31198 GovernorVotesQuorumFraction updates to quorum may affect past defeated proposals in @openzeppelin/contracts
- CVE-2022-31170 OpenZeppelin Contracts's ERC165Checker may revert instead of returning false
Sources
Also known as GHSA-4h98-2769-gh6h.