Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-34038 — CVE-2026-34038: Coolify에서 인증된 원격 명령 주입 | Kitploit
도구/GitHubGitHub/themehackers/cve-2026-34038
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPapers & ResearchLearning & Education
GitHubthemehackers/cve-2026-34038

CVE-2026-34038

CVE-2026-34038: Coolify에서 인증된 원격 명령 주입

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-34038: Coolify에서의 인증된 원격 명령어 삽입

이 저장소는 CVE-2026-34038에 대한 문서와 분석을 포함합니다. 이는 Coolify의 심각한 명령어 삽입 취약점입니다.

요약

Coolify에서 인증된 원격 명령어 삽입 취약점(CWE-78)으로 인해 애플리케이션 "쓰기" 권한을 가진 사용자가 **원격 코드 실행(RCE)**을 달성하고, 배포 로그를 통해 민감한 환경 변수(예: 데이터베이스 자격 증명, API 키)를 탈취할 수 있습니다. 빌드 환경이 Docker 소켓을 격리하더라도 가능합니다.

  • 취약점 유형: CWE-78 (OS 명령어 삽입)
  • 심각도: 치명적 (CVSS 10.0)
  • 벡터: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

사전 조건 및 제한 사항

  • 최소 필요 권한: write (설정 업데이트) 및 read:sensitive (로그를 통해 탈취된 데이터 읽기)
  • 우회: 명시적인 deploy 권한이 없는 토큰이 빌드를 트리거할 수 있는 메커니즘이 존재합니다.
  • 공격 표면: 관리자/루트 권한이 필요하지 않으므로 전체 공격 표면은 초기 추정보다 더 넓습니다.

기술적 세부 사항

1. dockerfile_location 삽입

파일: app/Jobs/ApplicationDeploymentJob.php

입력 값에 적절한 셸 이스케이프 또는 입력 검증이 부재하여 ;, &&, 파이프와 같은 메타 문자를 사용한 직접 명령어 삽입이 가능합니다.

root@kitploit:~
// Lines 2976-2978: Traditional build with args
$build_command = $this->wrap_build_command_with_env_export(
    "docker build {$this->buildTarget} --network {$this->destination->network} -f {$this->workdir}{$this->dockerfile_location} {$this->build_args} --progress plain -t $this->build_image_name {$this->workdir}"
);

// Lines 526: Also used in simple dockerfile deployment
executeInDocker($this->deployment_uuid, "echo '$dockerfile_base64' | base64 -d | tee {$this->workdir}{$this->dockerfile_location} > /dev/null"),

2. pre_deployment_command 실행

파일: app/Jobs/ApplicationDeploymentJob.php (Lines 3882-3909)

기본적인 이스케이프 처리는 이루어지지만, 함수가 본질적으로 네이티브 셸 명령어를 실행하므로 데이터를 빌드 로그에 직접 덤프할 수 있습니다.

root@kitploit:~
private function run_pre_deployment_command()
{
    if (empty($this->application->pre_deployment_command)) {
        return;
    }
    // ...
    $cmd = "sh -c '".str_replace("'", "'\\''", $this->application->pre_deployment_command)."'";
    $exec = "docker exec {$containerName} {$cmd}";
    $this->execute_remote_command(
        [
            'command' => $exec,
            'hidden' => true,
        ],
    );
}

수정 방안

1. dockerfile_location 입력 검증 (ApplicationDeploymentJob.php에서):

엄격한 정규 표현식을 사용하여 입력을 검증하고 셸 인수를 이스케이프합니다:

root@kitploit:~
if ($this->application->dockerfile_location) {
    if (!preg_match('/^[a-zA-Z0-9._\-\/]+$/', $this->application->dockerfile_location)) {
        throw new \RuntimeException("Invalid dockerfile_location: contains forbidden characters");
    }
    if (str_contains($this->application->dockerfile_location, '..')) {
        throw new \RuntimeException("Invalid dockerfile_location: path traversal detected");
    }
    $this->dockerfile_location = escapeshellarg($this->application->dockerfile_location);
}

2. API 수준 검증 (bootstrap/helpers/api.php):

root@kitploit:~
'dockerfile_location' => [
    'string',
    'nullable',
    'regex:/^[a-zA-Z0-9._\-\/]+$/',
    'max:255'
],

3. 기타 지침:

  • 셸 메타 문자를 차단하는 엄격한 허용 목록을 적용합니다.
  • 배포 권한 우회 로직을 수정합니다.
  • docker_compose_location과 같은 동등한 필드를 감사합니다.

참고 자료 및 크레딧

  • 보고자 / 크레딧: ThemeHackers
  • 공식 권고: GitHub Security Advisory (GHSA-qqrq-r9h4-x6wp)
도구 다운로드