W bibliotece EthereumJ 1.8.2 wykryto podatność klasy Unsafe Deserialization (CWE-502) w plikach mine/Ethash.java oraz crypto/ECKey.java. Luka pozwala atakującemu na zdalne wykonanie dowolnych poleceń systemowych na serwerze bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
An issue was discovered in EthereumJ 1.8.2. There is Unsafe Deserialization in ois.readObject in mine/Ethash.java and decoder.readObject in crypto/ECKey.java. When a node syncs and mines a new block, arbitrary OS commands can be run on the server.
Podatność wynika z niebezpiecznego użycia mechanizmu deserializacji obiektów Java — metod ois.readObject oraz decoder.readObject — bez walidacji danych wejściowych. Atakujący może dostarczyć spreparowany, złośliwy obiekt serializowany, który podczas procesu synchronizacji węzła lub wydobywania nowego bloku zostanie zdeserializowany. Wykonanie takiego payloadu prowadzi do uruchomienia dowolnych poleceń systemu operacyjnego na serwerze hostującym węzeł.
Atakujący może zdalnie wykonać dowolne polecenia systemowe (RCE) na serwerze z pełnymi uprawnieniami procesu, co może prowadzić do całkowitego przejęcia kontroli nad węzłem, ujawnienia danych, ich modyfikacji lub niedostępności usługi.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (repozytorium ethereum/ethereumj na GitHub). Należy unikać uruchamiania podatnych węzłów EthereumJ 1.8.2 w środowiskach produkcyjnych do czasu wdrożenia poprawki. Zaleca się monitorowanie issues projektu pod adresem github.com/ethereum/ethereumj/issues/1161.
EthereumJ w wersji 1.8.2
W referencjach wskazano narzędzie ysoserial (github.com/frohoff/ysoserial), powszechnie stosowane do generowania złośliwych payloadów exploitujących podatności deserializacji Java, co sugeruje możliwość praktycznego wykorzystania podatności przy użyciu publicznie dostępnych narzędzi.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEthereum Ethereumj
APPEthereum1.8.2
Powiązane podatności
RCE w Ethereum Virtual Machine (libevm) przez out-of-bounds read
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...