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 (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 (@​openzeppelin/contracts)

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. (#​5739)
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. (#​5741)
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-vulnerability branch 3 times, most recently from 165fe00 to 894e68c Compare July 24, 2025 04:56
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 9 times, most recently from 107c8a1 to e944c57 Compare August 10, 2025 18:46
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 3 times, most recently from 893bd95 to 569b2d2 Compare August 18, 2025 16:05
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 2 times, most recently from c96c6f9 to 051c786 Compare August 23, 2025 03:15
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 3 times, most recently from 75ae574 to 804320c Compare September 1, 2025 20:49
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 3 times, most recently from d7fc169 to c0a16be Compare September 14, 2025 18:24
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 4 times, most recently from 6dcc00b to fa53b06 Compare October 2, 2025 06:31
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 4 times, most recently from 27b7ef4 to 37b46d8 Compare October 16, 2025 06:29
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 2 times, most recently from 39a3e07 to 48f87fb Compare October 28, 2025 04:13
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 10 times, most recently from 4d9395f to 5cc9887 Compare November 5, 2025 04:34
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 3 times, most recently from c07bf57 to 0a98193 Compare November 10, 2025 23:14
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 2 times, most recently from ba33483 to 5661c3e Compare November 15, 2025 04:08
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch 3 times, most recently from b3b7418 to 6e7f5cb Compare November 29, 2025 03:16
…urity]

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate renovate bot force-pushed the renovate/npm-openzeppelin-contracts-vulnerability branch from 6e7f5cb to 00b28de 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