W bibliotece OpenZeppelin Contracts wykryto krytyczną podatność w komponencie TimelockController, umożliwiającą privilege escalation. Podmiot posiadający rolę executor mógł uzyskać wyższe uprawnienia niż powinny mu przysługiwać, co stanowi poważne zagrożenie dla bezpieczeństwa smart kontraktów.
▸ Pokaż oryginał (EN)
OpenZepplin is a library for smart contract development. In affected versions a vulnerability in TimelockController allowed an actor with the executor role to escalate privileges. Further details about the vulnerability will be disclosed at a later date. As a workaround revoke the executor role from accounts not strictly under the team's control. We recommend revoking all executors that are not also proposers. When applying this mitigation, ensure there is at least one proposer and executor remaining.
Podatność wynika z nieprawidłowej obsługi uprawnień (CWE-269) w komponencie TimelockController biblioteki OpenZeppelin Contracts. Aktor posiadający rolę executor — która standardowo uprawnia jedynie do wykonywania zaplanowanych operacji — mógł wykorzystać lukę do eskalacji swoich uprawnień w ramach systemu kontroli dostępu. Szczegółowy mechanizm techniczny nie został w pełni ujawniony przez producenta w momencie publikacji.
Atakujący posiadający rolę executor mógł uzyskać nieautoryzowane, podwyższone uprawnienia w smart kontrakcie, co potencjalnie prowadzi do całkowitego przejęcia kontroli nad kontraktem, naruszenia poufności i integralności danych oraz dostępności zasobu.
Należy zaktualizować bibliotekę OpenZeppelin Contracts do wersji 4.3.1 lub nowszej zgodnie z CHANGELOG producenta. Jako natychmiastowe obejście (workaround) należy odebrać rolę executor wszystkim kontom, które nie są ściśle kontrolowane przez zespół — zaleca się odwołanie wszystkich executorów niebędących jednocześnie proposerami. Przed zastosowaniem mitigacji należy upewnić się, że w systemie pozostaje co najmniej jeden aktywny proposer i executor.
OpenZeppelin Contracts oraz OpenZeppelin Contracts Upgradeable — wersje wskazane w referencjach producenta (changelog odwołuje się do wersji 4.3.1 jako zawierającej poprawkę)
Producent zastrzegł w momencie publikacji (2021-08-27), że pełne szczegóły techniczne podatności zostaną ujawnione w późniejszym terminie. Podatność dotyczy środowiska smart kontraktów Ethereum/EVM, gdzie błędy uprawnień mogą mieć nieodwracalne skutki finansowe.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HOpenzeppelin Contracts
APPOpenzeppelin3.3.0 – 3.4.2 (bez)4.0.0 – 4.3.1 (bez)
Powiązane podatności
OpenZeppelin Contracts — atak na niezainicjowane kontrakty UUPSUpgradeable
OpenZeppelin Contracts — privilege escalation w TimelockController
OpenZeppelin Contracts is a library for secure smart contract development. The functions `ECDSA.recover` and `...
OpenZeppelin Contracts is a library for secure smart contract development. This issue concerns instances of Go...
OpenZeppelin Contracts is a library for smart contract development. Versions 4.1.0 until 4.7.1 are vulnerable ...