Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/themehackers/cve-2026-34038
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y Educación
GitHubthemehackers/cve-2026-34038

CVE-2026-34038

CVE-2026-34038: Inyección remota de comandos autenticada en Coolify

Ver Repositorio
13hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-34038: Inyección Remota de Comandos Autenticada en Coolify

Este repositorio contiene documentación y análisis de CVE-2026-34038, una vulnerabilidad crítica de inyección de comandos en Coolify.

Resumen

Una vulnerabilidad autenticada de inyección remota de comandos (CWE-78) en Coolify permite a los usuarios con permisos "write" (escritura) sobre la aplicación lograr Ejecución Remota de Código (RCE) y Exfiltrar variables de entorno sensibles (p. ej., credenciales de bases de datos, claves API) a través de los registros de despliegue, incluso si el entorno de compilación aísla el socket de Docker.

  • Tipo de Vulnerabilidad: CWE-78 (Inyección de Comandos del Sistema Operativo)
  • Severidad: Crítica (CVSS 10.0)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Requisitos Previos y Limitaciones

  • Permisos Mínimos Requeridos: write (para actualizar la configuración) y read:sensitive (para leer los datos exfiltrados a través de los registros).
  • Bypass: Existe un mecanismo que permite a los tokens sin permisos explícitos de deploy desencadenar compilaciones.
  • Superficie de Ataque: La superficie de ataque general es mayor de lo estimado inicialmente, ya que no se requieren privilegios administrativos/root.

  • Detalles Técnicos

    1. Inyección en dockerfile_location

    Archivo: app/Jobs/ApplicationDeploymentJob.php

    La entrada carece de un escape adecuado para la shell o de validación de entrada, lo que permite la inyección directa de comandos mediante metacaracteres como ;, && y tuberías.

    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. Ejecución de pre_deployment_command

    Archivo: app/Jobs/ApplicationDeploymentJob.php (Líneas 3882-3909)

    Aunque se realiza un escape básico, la función ejecuta de forma nativa comandos de shell, lo que hace posible volcar datos directamente en los registros de compilación.

    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,
            ],
        );
    }
    

    Remediación

    1. Sanear la entrada de dockerfile_location (en ApplicationDeploymentJob.php):

    Valide la entrada mediante expresiones regulares estrictas y escape el argumento de la shell:

    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. Validación a nivel de API (bootstrap/helpers/api.php):

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

    3. Otras Recomendaciones:

    • Aplique listas de permitidos (allowlists) estrictas que bloqueen metacaracteres de shell.
    • Corrija la lógica de omisión (bypass) de permisos de despliegue.
    • Audite campos equivalentes como docker_compose_location.

    Referencias y Créditos

    • Reportero / Créditos: ThemeHackers
    • Aviso Oficial: Aviso de Seguridad de GitHub (GHSA-qqrq-r9h4-x6wp)
    Descargar herramienta