CVE-2026-72863
KrytyczneCVSS 9.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 31 - wyżej niż 31% wszystkich znanych CVE
Streszczenie
Dokploy przed wersją 0.29.13 w handlerach WebSocket (terminalach w aplikacji i strumieniach logów) uwierzytelnia sesję, ale nigdy jej nie autoryzuje. Ustalają tożsamość użytkownika przez validateRequest(), a następnie działają bez konsultacji z modelem ról/uprawnień, który egzekwują wszystkie procedury tRPC. Każdy uwierzytelniony członek może otworzyć interaktywną powłokę w dowolnym kontenerze na hoście, w tym w kontenerze dokploy montującym gniazdo Docker, a stamtąd uzyskać root na hoście, wychodząc poza aplikację i przekraczając granice dzierżawców.
Ocena ryzyka
Atakujący może uzyskać pełną kontrolę nad hostem i naruszyć izolację między dzierżawcami, co prowadzi do całkowitej kompromitacji infrastruktury.
Rekomendacja
Zaktualizuj Dokploy do wersji 0.29.13 lub nowszej, która zawiera poprawkę eliminującą podatność.
Inne podatności w Dokploy
Zobacz wszystkie- CVE-2026-93425Krytyczne
W Dokploy przed wersją 0.29.13 procedura tRPC patch.readRepoDirectories przekazuje kontrolowaną przez użytkownika wartość repoPath z pliku patch.ts do polecenia powłoki w patch-repo.ts bez bezpiecznego cytowania argumentów. Uwierzytelniony członek organizacji z uprawnieniem service:read może wstrzyknąć metaznaki powłoki do repoPath i wykonać dowolne polecenia przez child_process.exec jako root w kontenerze Dokploy. Ponieważ standardowe wdrożenie montuje /var/run/docker.sock, wykonanie poleceń jako root w kontenerze może posłużyć do kontroli Dockera i przejęcia hosta oraz zarządzanych aplikacji. Problem naprawiono w wersji 0.29.13.
- CVE-2026-86059Krytyczne
Dokploy to samodzielnie hostowana platforma PaaS. Przed wersją 0.29.13 członkowie organizacji bez dostępu do dostawcy Git mogą odczytać poświadczenia dostawcy w postaci jawnej poprzez procedury github.one, gitlab.one, gitea.one i bitbucket.one, ponieważ zwracają one pełne rekordy dostawcy bez sprawdzenia getAccessibleGitProviderIds lub przynależności do organizacji. Trasa application.one zwraca także zagnieżdżone relacje GitHub, GitLab, Gitea i Bitbucket z kluczami prywatnymi GitHub App, tokenami OAuth, sekretami klienta, sekretami webhooków i hasłami aplikacji, nawet gdy hasGitProviderAccess ma wartość false.
- CVE-2026-82954Krytyczne
W Dokploy do wersji 0.29.7 wykryto podatność na przechodzenie po ścieżkach (path traversal) w funkcji writeTraefikConfigInPath pliku packages/server/src/utils/traefik/application.ts komponentu Settings, poprzez manipulację argumentem path. Atak może być przeprowadzony zdalnie, a exploit jest publiczny.
- CVE-2026-72902Krytyczne
Dokploy przed wersją 0.29.13 pozwala uwierzytelnionemu użytkownikowi na wykonanie dowolnych poleceń na lokalnym lub połączonym przez SSH serwerze docelowym, ponieważ funkcje registry.testRegistry i registry.testRegistryById interpolują pole hasła do polecenia powłoki execAsyncRemote zamiast używać bezpiecznego polecenia safeDockerLoginCommand.
- CVE-2026-72901Krytyczne
Dokploy przed wersją 0.29.13 pozwala uwierzytelnionemu członkowi z niskimi uprawnieniami na wykonanie dowolnych poleceń na hoście kontrolnym, ponieważ pole volumeName przyjmowane przez volumeBackup.create i volumeBackup.runManually jest interpolowane bez cudzysłowów w packages/server/src/utils/volume-backups/backup.ts i wykonywane przez child_process.exec, a dostęp do gniazda Docker sprawia, że wykonanie jest równoważne z rootem na hoście.
- CVE-2026-72886Krytyczne
W Dokploy od wersji 0.29.2 do 0.29.13 funkcje schedule.create i schedule.update w pliku schedule.ts pobierają serviceId z applicationId lub composeId i wykonują kontrolę właściciela/admina tylko w alternatywnej gałęzi. Umożliwia to członkowi z dostępem do jednej aplikacji dołączenie jej applicationId do harmonogramu dokploy-server i uruchomienie dostarczonego skryptu jako root przez schedule.runManually. Problem naprawiono w wersji 0.29.13.
- CVE-2026-72882Krytyczne
W Dokploy w wersji 0.28.8 i wcześniejszych uwierzytelniony użytkownik, który może tworzyć lub aktualizować montowania plików dla usługi, może wstrzyknąć metaznaki powłoki do filePath, powodując wykonanie przez Dokploy poleceń kontrolowanych przez atakującego na skonfigurowanym zdalnym serwerze przez SSH. W domyślnym modelu wdrożenia prowadzi to do zdalnego wykonania kodu na hoście z poziomu interfejsu webowego.
- CVE-2026-72880Krytyczne
W Dokploy przed wersją 0.29.13 schemat apiCreateCertificate w schema/certificate.ts akceptuje dostarczony przez klienta certificatePath, a usługa certificate.ts łączy tę wartość z katalogiem głównym certyfikatów bez ograniczeń. Uwierzytelniony użytkownik z uprawnieniami do tworzenia lub usuwania certyfikatów może użyć certificatePath do zapisu treści certyfikatu poza zamierzonym katalogiem lub usunięcia katalogu poza głównym. Podatność naprawiono w wersji 0.29.13.
- CVE-2026-72879Krytyczne
W Dokploy przed wersją 0.29.8 funkcja getRegistryCommands() w pliku upload.ts interpoluje registry.password i registry.registryUrl bezpośrednio do polecenia powłoki bez odpowiedniego escapowania. Uwierzytelniony użytkownik z dostępem do projektu może skonfigurować złośliwe dane uwierzytelniające rejestru i wywołać wdrożenie swarm, aby wykonać dowolne polecenia systemu operacyjnego na serwerze Dokploy, czytać lub modyfikować pliki hosta oraz uzyskać dostęp do innych kontenerów przez Docker. Problem naprawiono w wersji 0.29.8.
- CVE-2026-72878Krytyczne
W Dokploy przed wersją 0.29.13 potok tworzenia kopii zapasowych i przywracania konstruuje polecenia powłoki, bezpośrednio interpolując kontrolowane przez użytkownika pola bazy danych do ciągów bash -c "..." i sh -c "...", a następnie wykonuje je przez child_process.exec(). Uwierzytelniony administrator/właściciel może wstrzyknąć dowolne polecenia systemu operacyjnego, które wykonują się na hoście, na którym działa Dokploy (nie tylko wewnątrz kontenera). Podatność naprawiono w wersji 0.29.13.
Oryginalny opis (angielski, źródło NVD)
Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, Dokploy's WebSocket handlers (in-app terminals and log streamers) authenticate the session but never authorize it. They establish who the user is via validateRequest() and then proceed without consulting the role/permission model that every tRPC procedure enforces. Any authenticated member, can therefore open an interactive shell into any container on the host, including the dokploy container that mounts the Docker socket, and from there obtain root on the host, escaping the application and crossing every tenant boundary. This vulnerability is fixed in 0.29.13.

