Mittel

OpenZeppelin Contracts Bytes's lastIndexOf function with position argument performs out-of-bound memory access on empty buffers

  • Veröffentlicht: 17.07.2025
  • Aktualisiert: 11.10.2026 10:22

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

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
npm-Paket @openzeppelin/contracts >= 5.2.0, < 5.4.0 5.4.0
npm-Paket @openzeppelin/contracts-upgradeable >= 5.2.0, < 5.4.0 5.4.0

Verweise

CVSS-Wert 0
CVSS-Vektor
CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:N
Schwäche (CWE)
CWE-125
Plattform
npm
Paket
@openzeppelin/contracts, @openzeppelin/contracts-upgradeable
Veröffentlicht
17.07.2025
Aktualisiert
11.10.2026 10:22

Quellen und Lizenzen

OSV / GitHub Advisory Database - GHSA-9rcw-c2f9-2j55 - CC BY 4.0

Schwachstellenhistorie: @openzeppelin/contracts-upgradeable

Alle veröffentlichten Schwachstellen dieses Pakets (npm-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (22) im Archiv
Einträge insgesamt
22
Erste → letzte
08.2021 07.2025
Ohne Fix
0
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 3
  • Hoch 5
  • Mittel 12
  • Niedrig 2

Veröffentlichungen pro Jahr

  1. 2021: 5
  2. 2022: 8
  3. 2023: 7
  4. 2024: 1
  5. 2025: 1
  6. 2026: 0
Schweregrad:
  1. OpenZeppelin Contracts Bytes's lastIndexOf function with position argument performs out-of-bound memory access on empty buffers dieser Eintrag
    Mittel · 0.0 CVE-2025-54070 >= 5.2.0, < 5.4.0 5.4.0
  2. Hoch · 8.8 CVE-2023-30542 >= 4.3.0, < 4.8.3 4.8.3
  3. Hoch · 7.9 CVE-2022-35961 >= 4.1.0, < 4.7.3 4.7.3
  4. Hoch · 7.5 CVE-2022-31170 >= 4.0.0, < 4.7.1 4.7.1
  5. Kritisch · 9.8 CVE-2021-41264 >= 4.1.0, < 4.3.2 4.3.2
  6. Kritisch ghsa-q4h9-46xg-m3x9 >= 4.1.0, < 4.3.2 4.3.2
  7. Kritisch · 10.0 CVE-2021-39168 >= 4.0.0, < 4.3.1, >= 3.3.0, < 3.4.2 4.3.1, 3.4.2

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.