OneDev przed wersją 4.0.3 zawiera podatność umożliwiającą przesłanie dowolnego pliku na serwer, w tym potencjalnie WebShell. Podatność wynika z braku walidacji zarówno treści przesyłanego pliku, jak i ścieżki docelowej wskazywanej przez użytkownika.
▸ Pokaż oryginał (EN)
OneDev is an all-in-one devops platform. In OneDev before version 4.0.3, AttachmentUploadServlet also saves user controlled data (`request.getInputStream()`) to a user specified location (`request.getHeader("File-Name")`). This issue may lead to arbitrary file upload which can be used to upload a WebShell to OneDev server. This issue is addressed in 4.0.3 by only allowing uploaded file to be in attachments folder. The webshell issue is not possible as OneDev never executes files in attachments folder.
Komponent AttachmentUploadServlet zapisuje dane przesłane przez użytkownika (pobierane bezpośrednio z `request.getInputStream()`) do lokalizacji wskazanej przez nagłówek HTTP `File-Name`, który jest w pełni kontrolowany przez atakującego. Brak jakiejkolwiek walidacji ścieżki docelowej pozwala na umieszczenie pliku w dowolnym miejscu na serwerze. Atakujący może w ten sposób próbować wgrać złośliwy plik, np. WebShell, poza przeznaczonym do tego folderem załączników.
Atakujący nieuwierzytelniony zdalnie może przesłać dowolny plik w dowolne miejsce na serwerze, co potencjalnie prowadzi do przejęcia kontroli nad serwerem poprzez wykonanie złośliwego kodu (np. WebShell). Według producenta faktyczne wykonanie WebShell nie jest możliwe w domyślnej konfiguracji, ponieważ OneDev nigdy nie wykonuje plików z folderu załączników.
Należy zaktualizować OneDev do wersji 4.0.3 lub nowszej. W wersji 4.0.3 producent wprowadził ograniczenie, które pozwala zapisywać przesyłane pliki wyłącznie w folderze załączników, eliminując możliwość zapisu w dowolnej lokalizacji na serwerze.
OneDev (platforma DevOps projektu Onedev Project) w wersjach przed 4.0.3
Mimo oceny CVSS 10.0 (CRITICAL), producent wskazuje, że ryzyko wykonania WebShell jest ograniczone przez fakt, że OneDev nie wykonuje plików z folderu załączników. Poprawka dostępna w commicie 0c060153fb97c0288a1917efdb17cc426934dacb w repozytorium GitHub.
CVSS:3.1/AV:N/AC:L/PR:N/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 — zdalne wykonanie kodu przez deserializację danych AJAX (post-auth RCE)
OneDev — pre-auth RCE przez deserializację w endpointach Kubernetes