CVE-2026-120307
KrytyczneCVSS 9.9Streszczenie
Worker Beta9 udostępnia API plików sandboxa spoza kontenera. Funkcja getHostPathFromContainerPath przekształca ścieżkę kontenera dzierżawcy na ścieżkę workera; jeśli nierozwiązana ścieżka zaczyna się od celu montowania (w tym domyślnego /tmp/.beta9), reszta jest dołączana do źródła montowania za pomocą filepath.Join, co czyści segmenty katalogu nadrzędnego po sprawdzeniu prefiksu. Odpowiednio długi ciąg takich segmentów wskazuje dowolną ścieżkę absolutną na workerze, a ścieżka niepasująca do żadnego montowania jest otwierana w systemie plików workera, podążając za dowiązaniami symbolicznymi. Dzierżawca z tokenem workspace i działającym sandboxem może czytać, zapisywać, listować i usuwać pliki na workerze jako root, w tym pliki innych dzierżawców.
Ocena ryzyka
Dzierżawca może uzyskać pełny dostęp do systemu plików workera jako root, w tym do tokenu konta usługi Kubernetes, które w dostarczonych manifestach ma uprawnienia cluster-admin, co może prowadzić do przejęcia klastra. Podatność dotyczy workerów Beta9 przed wersją 0.1.756.
Rekomendacja
Zaktualizuj workera Beta9 do wersji 0.1.756 lub nowszej, która używa os.OpenRoot do operacji na plikach sandboxa i synchronizacji workspace, zapewniając pozostanie ścieżek w granicach kontenera lub źródła montowania.
Inne podatności w Beta9
Zobacz wszystkie- CVE-2026-120308Krytyczne
W Beta9 dzierżawca może podpiąć wolumen podczas wdrażania funkcji, endpointu lub kolejki zadań. Gateway buduje ścieżkę hosta łącząc katalog główny wolumenów współdzielonych, nazwę workspace i identyfikator wolumenu ze stubu, bez weryfikacji, czy wolumen należy do danego workspace. Segmenty katalogu nadrzędnego w identyfikatorze pozwalają zredukować ścieżkę do katalogu głównego systemu plików workera, który jest montowany w sandboxie z prawem zapisu, umożliwiając odczyt i zapis plików workera, w tym wolumenów innych dzierżawców.
- CVE-2026-120306Krytyczne
Beta9 zamienia każdą komendę powłoki w definicji obrazu dzierżawcy na linię RUN w Dockerfile i wykonuje ją za pomocą Buildah na workerze budowania. Obraz workera ustawia BUILDAH_ISOLATION=chroot, a żadne wywołanie buildah nie przekazuje --isolation, więc krok zmienia tylko katalog główny systemu plików, zachowując przestrzenie nazw PID, sieci, IPC i użytkownika workera, działając jako uid 0 z CAP_DAC_OVERRIDE. PID 1 w tym procfs to entrypoint workera, więc /proc/1/root to system plików kontenera workera i jest zapisywalny, zawierając binaria runc, buildah i runsc, token konta usługi Kubernetes oraz katalogi hosta zamontowane w podzie. Pody workera są uprzywilejowane, a warstwowe budowy Clip v2 są domyślne, więc dzierżawca z tokenem workspace może to osiągnąć, przesyłając jedną budowę obrazu.
Oryginalny opis (angielski, źródło NVD)
The Beta9 worker serves the sandbox file API from outside the container. getHostPathFromContainerPath turns the tenant's container path into a worker path. If the unresolved path starts with a mount destination, including the default upload mount at /tmp/.beta9, the remainder is joined onto that mount's source with filepath.Join, which cleans parent-directory segments after the prefix check. A long enough run of those segments names any absolute path on the worker. A path that matches no mount is joined onto the container root and opened in the worker's own filesystem, so an absolute symbolic link such as /var/run pointing at /run is followed against the worker root. Upload, download, stat, list, find-in-files, replace-in-files, and delete-file all call this helper. A tenant with a workspace token and one running sandbox can read, write, list, and delete files on the hosting worker as root, including files of other tenants on that machine. A read-only proof downloaded the worker pod's Kubernetes service account token through the file API for a path that did not exist inside the sandbox. In the shipped remote-node manifests that service account is bound to cluster-admin. Fixed in worker 0.1.756: sandbox file operations and workspace sync open paths with os.OpenRoot, so parent-directory and symlink lookups stay inside the container root or the mount source.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

