VYPR
High severityNVD Advisory· Published Aug 14, 2022· Updated Apr 23, 2025

ECDSA signature malleability in OpenZeppelin Contracts

CVE-2022-35961

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.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

OpenZeppelin Contracts ECDSA functions accept malleable signatures via EIP-2098 format, bypassing replay protection; fixed in 4.7.3.

OpenZeppelin Contracts' ECDSA.recover and ECDSA.tryRecover functions accept both traditional 65-byte signatures and EIP-2098 compact signatures (64 bytes). This dual-format acceptance introduces signature malleability: an attacker can convert a valid signature into a different form while preserving recoverability. The vulnerability affects contracts that mark the signature itself as used, rather than the signed message or a nonce, for replay protection [1].

An attacker who has observed a submitted transaction can take the original signature, convert it to the alternative format, and resubmit the same message with a different signature. No authentication or network position is required beyond visibility of a valid signature. The functions that take separate r, v, s or r, vs parameters are not affected [1].

Successful exploitation allows bypassing replay protection, enabling double-spending or unauthorized repeats of signed actions. The impact depends on the contract's use of signatures; for example, token transfers or voting systems could be compromised.

The issue is patched in OpenZeppelin Contracts v4.7.3. The fix removes support for compact signatures in the bytes-based functions [2][3]. Users should upgrade to v4.7.3 or later and ensure that any use of ECDSA.recover or ECDSA.tryRecover with a single bytes argument does not rely solely on signature uniqueness for replay protection [4].

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
@openzeppelin/contractsnpm
>= 4.1.0, < 4.7.34.7.3
@openzeppelin/contracts-upgradeablenpm
>= 4.1.0, < 4.7.34.7.3

Affected products

3

Patches

0

No patches discovered yet.

Vulnerability mechanics

AI mechanics synthesis has not run for this CVE yet.

References

6

News mentions

0

No linked articles in our index yet.