CRITICAL🇬🇧 English

CVE-2022-39206

OneDev: ucieczka z kontenera Docker i przejęcie hosta przez CI/CD

CVSS 9.9v3.1pub. 2022-09-13upd. 2024-11-21

Podatność w OneDev pozwala uwierzytelnionym użytkownikom (bez uprawnień administratora) na przejęcie kontroli nad daemonem Docker na hoście poprzez zamontowany socket Docker w krokach CI/CD. W praktyce umożliwia to ucieczkę z kontenera i uzyskanie uprawnień root na systemie hosta.

Pokaż oryginał (EN)

Onedev is an open source, self-hosted Git Server with CI/CD and Kanban. When using Docker-based job executors, the Docker socket (e.g. /var/run/docker.sock on Linux) is mounted into each Docker step. Users that can define and trigger CI/CD jobs on a project could use this to control the Docker daemon on the host machine. This is a known dangerous pattern, as it can be used to break out of Docker containers and, in most cases, gain root privileges on the host system. This issue allows regular (non-admin) users to potentially take over the build infrastructure of a OneDev instance. Attackers need to have an account (or be able to register one) and need permission to create a project. Since code.onedev.io has the right preconditions for this to be exploited by remote attackers, it could have been used to hijack builds of OneDev itself, e.g. by injecting malware into the docker images that are built and pushed to Docker Hub. The impact is increased by this as described before. Users are advised to upgrade to 7.3.0 or higher. There are no known workarounds for this issue.

🤖 Analiza AI
Jak działa

Podczas wykonywania zadań CI/CD z użyciem Docker-based job executors, OneDev montuje socket Dockera (np. /var/run/docker.sock) bezpośrednio do każdego kroku uruchamianego w kontenerze. Użytkownik posiadający konto i uprawnienia do tworzenia projektu może zdefiniować złośliwy pipeline CI/CD, który za pośrednictwem tego socketa wydaje polecenia do daemona Docker działającego na hoście. Jest to znany niebezpieczny wzorzec umożliwiający ucieczkę z izolacji kontenerowej i eskalację uprawnień do poziomu root na systemie hosta.

Skutki

Atakujący może uzyskać pełną kontrolę (root) nad maszyną hostującą OneDev, przejąć infrastrukturę build oraz wstrzyknąć złośliwy kod do artefaktów budowania, takich jak obrazy Docker publikowane na Docker Hub.

Mitygacja

Należy zaktualizować OneDev do wersji 7.3.0 lub nowszej. Producent nie wskazuje żadnych obejść (workarounds) dla tej podatności.

Kogo dotyczy

OneDev w wersjach poniżej 7.3.0 (Onedev Project Onedev) z włączonymi Docker-based job executors

Uwagi

Podatność została opisana przez badaczy z SonarSource (referencja: blog.sonarsource.com/onedev-remote-code-execution). Instancja code.onedev.io była szczególnie narażona ze względu na domyślnie włączoną rejestrację użytkowników i możliwość tworzenia projektów, co umożliwiało atak zdalnym, nieautoryzowanym wcześniej osobom.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
  • Onedev Project Onedev

    APP
    Onedev Project
    < 7.3.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Container
CWE
Referencje

Powiązane podatności

CVE-2022-39205CRITICAL9.0PL ✓ten sam produkt

OneDev: Pominięcie uwierzytelnienia prowadzące do RCE przez endpoint git callback

CVE-2021-21244CRITICAL10.0PL ✓ten sam produkt

Pre-auth Server Side Template Injection w OneDev (przed 4.0.3)

CVE-2021-21245CRITICAL10.0PL ✓ten sam produkt

OneDev: Dowolne przesyłanie plików przez AttachmentUploadServlet

CVE-2021-21243CRITICAL10.0PL ✓ten sam produkt

OneDev — pre-auth RCE przez deserializację w endpointach Kubernetes

CVE-2021-21242CRITICAL10.0PL ✓ten sam produkt

OneDev: Pre-auth RCE przez deserializację w AttachmentUploadServlet