Podatność w bibliotece libevm (Ethereum Virtual Machine) wchodzącej w skład CPP-Ethereum umożliwia zdalne wykonanie kodu poprzez specjalnie spreparowany smart contract. Krytyczny charakter podatności wynika z możliwości jej zdalnego wywołania bez uwierzytelnienia oraz pełnego przejęcia kontroli nad podatnym węzłem.
▸ Pokaż oryginał (EN)
An exploitable out-of-bounds read vulnerability exists in libevm (Ethereum Virtual Machine) of CPP-Ethereum. A specially crafted smart contract code can cause an out-of-bounds read which can subsequently trigger an out-of-bounds write resulting in remote code execution. An attacker can create/send malicious smart contract to trigger this vulnerability.
Błąd polega na odczycie danych spoza przydzielonego bufora pamięci (out-of-bounds read, CWE-125) podczas przetwarzania kodu smart contractu przez maszynę wirtualną EVM. Specjalnie skonstruowany kod kontraktu powoduje, że silnik EVM odczytuje dane wykraczające poza granice bufora. Taki odczyt może następnie wyzwolić zapis poza granicami bufora (out-of-bounds write), co ostatecznie prowadzi do zdalnego wykonania kodu (RCE). Atakujący może dostarczyć złośliwy kod, tworząc lub wysyłając odpowiednio spreparowany smart contract do podatnego węzła.
Atakujący może uzyskać możliwość zdalnego wykonania dowolnego kodu (RCE) na węźle obsługującym CPP-Ethereum, co może skutkować pełnym przejęciem kontroli nad systemem, naruszeniem poufności, integralności i dostępności danych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://talosintelligence.com/vulnerability_reports/TALOS-2017-0500). Zaleca się również ograniczenie możliwości przesyłania nieautoryzowanych smart contractów do węzłów oraz monitorowanie ruchu sieciowego pod kątem anomalii.
CPP-Ethereum (implementacja klienta Ethereum w C++) zawierający bibliotekę libevm; konkretne wersje wskazane w referencjach producenta (raport TALOS-2017-0500).
Podatność została odkryta i zgłoszona przez Cisco Talos (identyfikator wewnętrzny TALOS-2017-0500). Mimo daty odkrycia w 2017 roku, CVE zostało opublikowane dopiero 2020-12-02.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HEthereum
APPEthereumwszystkie wersje
Powiązane podatności
Niebezpieczna deserializacja w EthereumJ umożliwia wykonanie poleceń OS
go-ethereum (geth) is a golang execution layer implementation of the Ethereum protocol. Prior to version 1.16....
go-ethereum (geth) is a golang execution layer implementation of the Ethereum protocol. A vulnerable node can ...
go-ethereum (geth) is a golang execution layer implementation of the Ethereum protocol. A vulnerable node can ...
Geth (aka go-ethereum) through 1.13.4, when --http --graphql is used, allows remote attackers to cause a denia...