🇰🇷 한글 설명
Dokploy 0.29.13 미만 버전에서 발생하는 취약점으로, 인증된 조직 구성원이 repoPath 매개변수에 쉘 메타문자를 주입하여 root 권한으로 임의의 명령을 실행할 수 있습니다. 이 취약점은 Docker 소켓이 마운트되어 있어 컨테이너를 넘어 호스트 시스템 및 관리 중인 애플리케이션 전체를 장악할 수 있는 심각한 위험을 초래합니다.
💡 쉬운 설명
Dokploy 서비스의 특정 기능을 사용할 때 입력값을 제대로 검사하지 않아 발생하는 보안 구멍입니다. 공격자가 이 구멍을 통해 서버의 관리자 권한을 탈취하고 전체 시스템을 마음대로 조종할 수 있습니다.
🇺🇸 원문 (English)
Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, the patch.readRepoDirectories tRPC procedure passes the user-controlled repoPath value from apps/dokploy/server/api/routers/patch.ts into a shell command in packages/server/src/services/patch-repo.ts without safe argument quoting. An authenticated organization member with service:read permission can inject shell metacharacters into repoPath and execute arbitrary commands through child_process.exec as root in the Dokploy container. The supplied service identifier is used only to resolve the server and does not constrain repoPath. Because the standard deployment mounts /var/run/docker.sock, container-root command execution can be used to control Docker and compromise the host and its managed applications. This issue is fixed in version 0.29.13.
📍 영향받는 시스템
Dokploy 0.29.13 미만 모든 버전
⚔️ 공격 벡터
인증된 사용자가 tRPC 프로시저의 repoPath 값에 쉘 명령어를 주입하여 실행
🛡️ 대응 방법
Dokploy를 최신 버전인 0.29.13 이상으로 즉시 업데이트하십시오.
🔧 검증 코드
명령어 실행 결과로 버전 번호가 출력된다면 0.29.13 미만 버전이므로 취약한 상태입니다.
docker exec $(docker ps -q --filter ancestor=dokploy) dokploy --version 2>/dev/null | grep -E '0\.(0|[1-9][0-9]+)\.(0|[1-9][0-9]+)' | awk '{print $2}' | awk -F. '($3 < 13)'