Podatność w platformie OneDev umożliwia uwierzytelnionemu atakującemu zdalne wykonanie kodu (RCE) poprzez przesłanie złośliwie spreparowanego, zserializowanego obiektu do endpointu AJAX dostępnego na każdej stronie aplikacji. Pomimo wymogu uwierzytelnienia, krytyczna ocena CVSS 9.6 odzwierciedla pełny zakres możliwych skutków — w tym naruszenie poufności i integralności danych.
▸ Pokaż oryginał (EN)
OneDev is an all-in-one devops platform. In OneDev before version 4.0.3, the application's BasePage registers an AJAX event listener (`AbstractPostAjaxBehavior`) in all pages other than the login page. This listener decodes and deserializes the `data` query parameter. We can access this listener by submitting a POST request to any page. This issue may lead to `post-auth RCE` This endpoint is subject to authentication and, therefore, requires a valid user to carry on the attack. This issue was addressed in 4.0.3 by encrypting serialization payload with secrets only known to server.
W wersjach OneDev przed 4.0.3 komponent BasePage rejestruje globalny listener zdarzeń AJAX (AbstractPostAjaxBehavior) na wszystkich stronach z wyjątkiem strony logowania. Listener ten dekoduje i deserializuje parametr zapytania `data` zawarty w żądaniu POST. Atakujący posiadający ważne konto użytkownika może wysłać żądanie POST do dowolnej strony aplikacji z odpowiednio przygotowanym, złośliwym payload'em serializacyjnym. Niebezpieczna deserializacja (CWE-502) prowadzi do wykonania dowolnego kodu po stronie serwera.
Uwierzytelniony atakujący może uzyskać zdalne wykonanie kodu (RCE) na serwerze hostującym OneDev, co może skutkować pełnym przejęciem kontroli nad aplikacją oraz naruszeniem poufności i integralności przetwarzanych danych.
Należy zaktualizować OneDev do wersji 4.0.3 lub nowszej. W wersji 4.0.3 producent wprowadził szyfrowanie payload'u serializacyjnego przy użyciu sekretów znanych wyłącznie serwerowi, co eliminuje możliwość podrzucenia złośliwych danych przez atakującego.
OneDev (Onedev Project) we wszystkich wersjach przed 4.0.3
Podatność wymaga uwierzytelnienia (PR:L), jednak zakres ataku jest nieograniczony (S:C), co skutkuje krytyczną oceną CVSS 9.6. Szczegóły podatności zostały opublikowane przez producenta w ramach GitHub Security Advisory GHSA-6pxf-75cf-vwjp.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:NOnedev Project Onedev
APPOnedev Project< 4.0.3
Powiązane podatności
OneDev: ucieczka z kontenera Docker i przejęcie hosta przez CI/CD
OneDev: Pominięcie uwierzytelnienia prowadzące do RCE przez endpoint git callback
Pre-auth Server Side Template Injection w OneDev (przed 4.0.3)
OneDev — pre-auth RCE przez deserializację w endpointach Kubernetes
OneDev: Dowolne przesyłanie plików przez AttachmentUploadServlet