Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jul 18, 2025

This PR contains the following updates:

Package Type Update Change OpenSSF
@openzeppelin/contracts-upgradeable (source) dependencies minor 5.3.0 -> 5.4.0 OpenSSF Scorecard

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

GitHub Vulnerability Alerts

CVE-2025-54070

Impact

The lastIndexOf(bytes,byte,uint256) function of the Bytes.sol library may access uninitialized memory when the following two conditions hold: 1) the provided buffer length is empty (i.e. buffer.length == 0) and position is not 2**256 - 1 (i.e. pos != type(uint256).max).

The pos argument could be used to access arbitrary data outside of the buffer bounds. This could lead to the operation running out of gas, or returning an invalid index (outside of the empty buffer). Processing this invalid result for accessing the buffer would cause a revert under normal conditions.

When triggered, the function reads memory at offset buffer + 0x20 + pos. If memory at that location (outside the buffer) matches the search pattern, the function would return an out of bound index instead of the expected type(uint256).max. This creates unexpected behavior where callers receive a valid-looking index pointing outside buffer bounds.

Subsequent memory accesses that don't check bounds and use the returned index must carefully review the potential impact depending on their setup. Code relying on this function returning type(uint256).max for empty buffers or using the returned index without bounds checking could exhibit undefined behavior.

Patches

Upgrade to 5.4.0


Release Notes

OpenZeppelin/openzeppelin-contracts-upgradeable (@​openzeppelin/contracts-upgradeable)

v5.4.0

Compare Source

Breaking changes
  • Update minimum pragma to 0.8.24 in SignatureChecker, Governor and Governor's extensions. (#​5716).
Pragma changes
  • Reduced pragma requirement of interface files
Changes by category
Account
  • Account: Added a simple ERC-4337 account implementation with minimal logic to process user operations. (#​5657)
  • AccountERC7579: Extension of Account that implements support for ERC-7579 modules of type executor, validator, and fallback handler. (#​5657)
  • AccountERC7579Hooked: Extension of AccountERC7579 that implements support for ERC-7579 hook modules. (#​5657)
  • EIP7702Utils: Add a library for checking if an address has an EIP-7702 delegation in place. (#​5587)
  • IERC7821, ERC7821: Interface and logic for minimal batch execution. No support for additional opData is included. (#​5657)
Governance
  • GovernorNoncesKeyed: Extension of Governor that adds support for keyed nonces when voting by sig. (#​5574)
Tokens
  • ERC20Bridgeable: Implementation of ERC-7802 that makes an ERC-20 compatible with crosschain bridges. (#​5735)
Cryptography
Signers
  • AbstractSigner, SignerECDSA, SignerP256, and SignerRSA: Add an abstract contract and various implementations for contracts that deal with signature verification. (#​5657)
  • SignerERC7702: Implementation of AbstractSigner for Externally Owned Accounts (EOAs). Useful with ERC-7702. (#​5657)
  • SignerERC7913: Abstract signer that verifies signatures using the ERC-7913 workflow. (#​5659)
  • MultiSignerERC7913: Implementation of AbstractSigner that supports multiple ERC-7913 signers with a threshold-based signature verification system. (#​5659)
  • MultiSignerERC7913Weighted: Extension of MultiSignerERC7913 that supports assigning different weights to each signer, enabling more flexible governance schemes. (#​5718)
Verifiers
  • ERC7913P256Verifier and ERC7913RSAVerifier: Ready to use ERC-7913 verifiers that implement key verification for P256 (secp256r1) and RSA keys. (#​5659)
Other
  • SignatureChecker: Add support for ERC-7913 signatures alongside existing ECDSA and ERC-1271 signature verification. (#​5659)
  • ERC7739: An abstract contract to validate signatures following the rehashing scheme from ERC7739Utils. (#​5664)
  • ERC7739Utils: Add a library that implements a defensive rehashing mechanism to prevent replayability of smart contract signatures based on the ERC-7739. (#​5664)
Structures
  • EnumerableMap: Add support for BytesToBytesMap type. (#​5658)
  • EnumerableMap: Add keys(uint256,uint256) that returns a subset (slice) of the keys in the map. (#​5713)
  • EnumerableSet: Add support for StringSet and BytesSet types. (#​5658)
  • EnumerableSet: Add values(uint256,uint256) that returns a subset (slice) of the values in the set. (#​5713)
Utils
  • Arrays: Add unsafeAccess, unsafeMemoryAccess and unsafeSetLength for bytes[] and string[]. (#​5568)
  • Blockhash: Add a library that provides access to historical block hashes using EIP-2935's history storage, extending the standard 256-block limit to 8191 blocks. (#​5642)
  • Bytes: Fix lastIndexOf(bytes,byte,uint256) with empty buffers and finite position to correctly return type(uint256).max instead of accessing uninitialized memory sections. (#​5797)

Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from 83e2a0f to d5b7ab2 Compare July 24, 2025 04:56
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 9 times, most recently from c72ee24 to 9b6bc2f Compare August 10, 2025 18:46
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from 050f0e9 to 89269d8 Compare August 18, 2025 16:05
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 2 times, most recently from 06bd9b1 to dfccd36 Compare August 23, 2025 03:15
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from e3b2881 to f8e177d Compare September 1, 2025 20:49
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from 36b3e03 to 8dab388 Compare September 14, 2025 18:24
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 4 times, most recently from 121fd5b to 9814330 Compare October 2, 2025 06:31
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 4 times, most recently from 43a64b3 to d1a5f96 Compare October 16, 2025 06:29
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 2 times, most recently from 014269b to 24cf0ac Compare October 28, 2025 04:14
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 10 times, most recently from 5a7d0b7 to ff3c7e8 Compare November 5, 2025 04:34
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from aac3f3d to 141c097 Compare November 10, 2025 23:14
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 2 times, most recently from 47a0c7f to 950f75c Compare November 15, 2025 04:08
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch 3 times, most recently from 117988b to b94c4c3 Compare November 29, 2025 03:16
… v5.4.0 [security]

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-upgradeable-vulnerability branch from b94c4c3 to b49af0b Compare November 30, 2025 03:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant