CVE-2022-31170

OpenZeppelin Contracts's ERC165Checker may revert instead of returning false

State
Published
Severity
7.5 High
Published
Jul 21, 2022
Updated
Apr 23, 2025
Reserved
May 18, 2022

Read the record on cve.org

Description

OpenZeppelin Contracts is a library for smart contract development. Versions 4.0.0 until 4.7.1 are vulnerable to ERC165Checker reverting instead of returning `false`. `ERC165Checker.supportsInterface` is designed to always successfully return a boolean, and under no circumstance revert. However, an incorrect assumption about Solidity 0.8's `abi.decode` allows some cases to revert, given a target contract that doesn't implement EIP-165 as expected, specifically if it returns a value other than 0 or 1. The contracts that may be affected are those that use `ERC165Checker` to check for support for an interface and then handle the lack of support in a way other than reverting. The issue was patched in version 4.7.1.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:NGitHub_M

Weaknesses

  • CWE-20 Improper Input Validation

Affected Products

ProductVersions
openzeppelin-contractsOpenZeppelin
  • >= 4.0.0, < 4.7.1Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.