CRITICAL✓ PATCH🇬🇧 English

CVE-2021-41264

OpenZeppelin Contracts — atak na niezainicjowane kontrakty UUPSUpgradeable

CVSS 9.8v3.1pub. 2021-11-12upd. 2024-11-21

Biblioteka OpenZeppelin Contracts zawiera podatność pozwalającą na atak na niezainicjowane kontrakty implementacyjne używające wzorca `UUPSUpgradeable`. Błąd może umożliwić atakującemu przejęcie kontroli nad kontraktem lub jego uaktualnienie w sposób nieautoryzowany, co w środowisku blockchain może skutkować nieodwracalną utratą środków lub danych.

Pokaż oryginał (EN)

OpenZeppelin Contracts is a library for smart contract development. In affected versions upgradeable contracts using `UUPSUpgradeable` may be vulnerable to an attack affecting uninitialized implementation contracts. A fix is included in version 4.3.2 of `@openzeppelin/contracts` and `@openzeppelin/contracts-upgradeable`. For users unable to upgrade; initialize implementation contracts using `UUPSUpgradeable` by invoking the initializer function (usually called `initialize`). An example is provided [in the forum](https://forum.openzeppelin.com/t/security-advisory-initialize-uups-implementation-contracts/15301).

🤖 Analiza AI
Jak działa

Kontrakty implementacyjne oparte na wzorcu `UUPSUpgradeable` wymagają jawnej inicjalizacji poprzez wywołanie funkcji inicjalizującej (zazwyczaj `initialize`). Jeśli kontrakt implementacyjny nie zostanie zainicjowany, jego stan pozostaje niezdefiniowany (CWE-665: Improper Initialization), co umożliwia niepowołanej osobie wywołanie funkcji inicjalizującej i przejęcie uprawnień właściciela kontraktu. Atakujący może następnie użyć tych uprawnień do modyfikacji lub zniszczenia logiki kontraktu proxy.

Skutki

Atakujący może przejąć kontrolę nad niezainicjowanym kontraktem implementacyjnym, co może prowadzić do pełnego naruszenia poufności, integralności i dostępności — w tym nieodwracalnego zniszczenia kontraktu lub kradzieży środków.

Mitygacja

Należy zaktualizować biblioteki `@openzeppelin/contracts` oraz `@openzeppelin/contracts-upgradeable` do wersji 4.3.2 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy ręcznie zainicjować kontrakty implementacyjne poprzez wywołanie funkcji inicjalizującej (`initialize`) zgodnie z poradą opublikowaną na forum OpenZeppelin (link w referencjach).

Kogo dotyczy

Biblioteki `@openzeppelin/contracts` oraz `@openzeppelin/contracts-upgradeable` w wersjach poprzedzających 4.3.2, w których stosowany jest wzorzec `UUPSUpgradeable`.

Uwagi

OpenZeppelin opublikowało dedykowane security advisory (GHSA-5vp3-v4hc-gx76) wraz z przykładem inicjalizacji kontraktu dostępnym na forum społecznościowym.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Openzeppelin Contracts

    APP
    Openzeppelin
    4.1.0 – 4.3.2 (bez)
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
CWE
Referencje

Powiązane podatności

CVE-2021-39168CRITICAL10.0PL ✓ten sam produkt

OpenZeppelin TimelockController — privilege escalation przez rolę executor

CVE-2021-39167CRITICAL10.0PL ✓ten sam produkt

OpenZeppelin Contracts — privilege escalation w TimelockController

CVE-2022-35961HIGH7.9ten sam produkt

OpenZeppelin Contracts is a library for secure smart contract development. The functions `ECDSA.recover` and `...

CVE-2022-31198HIGH7.5ten sam produkt

OpenZeppelin Contracts is a library for secure smart contract development. This issue concerns instances of Go...

CVE-2022-31172HIGH7.5ten sam produkt

OpenZeppelin Contracts is a library for smart contract development. Versions 4.1.0 until 4.7.1 are vulnerable ...