Podatność w OneUptime (wersje przed 10.0.20) umożliwia nisko uprzywilejowanemu użytkownikowi projektu wykonanie dowolnego kodu na serwerze (RCE) poprzez przesłanie złośliwego kodu Playwright do usługi oneuptime-probe. Zagrożenie jest krytyczne, ponieważ atakujący może przejąć kontrolę nad hostem lub kontenerem bez potrzeby klasycznej eskapady z sandbox.
▸ Pokaż oryginał (EN)
OneUptime is a solution for monitoring and managing online services. Prior to 10.0.20, OneUptime Synthetic Monitors allow low-privileged project users to submit custom Playwright code that is executed on the oneuptime-probe service. In the current implementation, this untrusted code is run inside Node's vm and is given live host Playwright objects such as browser and page. This creates a distinct server-side RCE primitive: the attacker does not need the classic this.constructor.constructor(...) sandbox escape. Instead, the attacker can directly use the injected Playwright browser object to reach browser.browserType().launch(...) and spawn an arbitrary executable on the probe host/container. This vulnerability is fixed in 10.0.20.
Funkcja Synthetic Monitors pozwala użytkownikom projektu na przesyłanie własnego kodu Playwright, który jest następnie wykonywany przez usługę oneuptime-probe. Kod ten jest uruchamiany wewnątrz mechanizmu vm modułu Node.js, jednak do jego środowiska przekazywane są rzeczywiste obiekty hosta — w tym obiekt browser i page. Atakujący może bezpośrednio wykorzystać wstrzyknięty obiekt browser, wywołując metodę browser.browserType().launch() z dowolnymi argumentami, co skutkuje uruchomieniem wybranego przez napastnika pliku wykonywalnego na hoście lub w kontenerze. Nie jest wymagana klasyczna technika eskapady z sandbox (np. this.constructor.constructor), ponieważ dostęp do obiektów hosta jest przyznawany wprost.
Atakujący z niskimi uprawnieniami w projekcie może wykonać dowolny kod na hoście lub w kontenerze, na którym działa usługa oneuptime-probe, co może prowadzić do pełnego przejęcia systemu, kradzieży danych oraz naruszenia integralności i dostępności usług.
Należy zaktualizować OneUptime do wersji 10.0.20 lub nowszej, w której podatność została naprawiona. Szczegóły dostępne w referencjach producenta: https://github.com/OneUptime/oneuptime/security/advisories/GHSA-4j36-39gm-8vq8
OneUptime (Hackerbay) we wszystkich wersjach przed 10.0.20 korzystający z funkcji Synthetic Monitors
Podatność klasyfikowana jako CWE-749 (Exposed Dangerous Method or Function) — udostępnienie żywych obiektów hosta Playwright do niezaufanego kodu stanowi zasadniczą przyczynę błędu. Mechanizm vm w Node.js nie zapewnia pełnej izolacji, gdy do sandbox przekazywane są referencje do obiektów zewnętrznych.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HHackerbay Oneuptime
APPHackerbay< 10.0.20
Powiązane podatności
Brak uwierzytelnienia w endpointach workflow w OneUptime (RCE)
Brak uwierzytelnienia w API powiadomień OneUptime — obejście autoryzacji
OneUptime: nieautoryzowany dostęp do endpointów powiadomień i zarządzania numerami
RCE w OneUptime — command injection przez Playwright w Synthetic Monitor
SQL Injection w OneUptime — nieautoryzowany dostęp do bazy i potencjalny RCE