{"id":"GHSA-4h98-2769-gh6h","summary":"OpenZeppelin Contracts vulnerable to ECDSA signature malleability","details":"### Impact\n\nThe 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.\n\nThe 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.\n\n### Patches\n\nThe issue has been patched in 4.7.3.\n\n\n### For more information\n\nIf you have any questions or comments about this advisory, or need assistance deploying a fix, email us at [security@openzeppelin.com](mailto:security@openzeppelin.com).\n","aliases":["CVE-2022-35961"],"modified":"2023-11-01T04:59:25.279537Z","published":"2022-08-18T19:00:43Z","database_specific":{"cwe_ids":["CWE-354"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2022-08-18T19:00:43Z","nvd_published_at":"2022-08-15T11:21:00Z"},"references":[{"type":"WEB","url":"https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-4h98-2769-gh6h"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-35961"},{"type":"WEB","url":"https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3610"},{"type":"WEB","url":"https://github.com/OpenZeppelin/openzeppelin-contracts/commit/d693d89d99325f395182e4f547dbf5ff8e5c3c87"},{"type":"PACKAGE","url":"https://github.com/OpenZeppelin/openzeppelin-contracts"},{"type":"WEB","url":"https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v4.7.3"}],"affected":[{"package":{"name":"@openzeppelin/contracts","ecosystem":"npm","purl":"pkg:npm/%40openzeppelin/contracts"},"ranges":[{"type":"SEMVER","events":[{"introduced":"4.1.0"},{"fixed":"4.7.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/08/GHSA-4h98-2769-gh6h/GHSA-4h98-2769-gh6h.json"}},{"package":{"name":"@openzeppelin/contracts-upgradeable","ecosystem":"npm","purl":"pkg:npm/%40openzeppelin/contracts-upgradeable"},"ranges":[{"type":"SEMVER","events":[{"introduced":"4.1.0"},{"fixed":"4.7.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/08/GHSA-4h98-2769-gh6h/GHSA-4h98-2769-gh6h.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:L"}]}