Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-34038 — CVE-2026-34038: Injection de commande à distance authentifiée dans Coolify | Kitploit
Outils/GitHubGitHub/themehackers/cve-2026-34038
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebArticles et RechercheApprentissage et Éducation
GitHubthemehackers/cve-2026-34038

CVE-2026-34038

CVE-2026-34038: Injection de commande à distance authentifiée dans Coolify

Voir le dépôt
13il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-34038: Injection de commande à distance authentifiée dans Coolify

Ce dépôt contient la documentation et l'analyse de CVE-2026-34038, une vulnérabilité critique d'injection de commande dans Coolify.

Résumé

Une vulnérabilité d'injection de commande à distance authentifiée (CWE-78) dans Coolify permet aux utilisateurs disposant d'autorisations "write" sur l'application d'atteindre une Exécution de Code à Distance (RCE) et d'Exfiltrer des variables d'environnement sensibles (par exemple, identifiants de base de données, clés API) via les journaux de déploiement, même si l'environnement de build isole le socket Docker.

  • Type de vulnérabilité : CWE-78 (Injection de commande OS)
  • Gravité : Critique (CVSS 10.0)
  • Vecteur : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Prérequis et limitations

  • Autorisations minimales requises : write (pour mettre à jour la configuration) et read:sensitive (pour lire les données exfiltrées via les journaux).
  • Contournement : Un mécanisme existe permettant à des jetons sans autorisation explicite deploy de déclencher des builds.
  • Surface d'attaque : La surface d'attaque globale est plus grande qu'estimée initialement car les privilèges administrateur/root ne sont pas requis.

  • Détails techniques

    1. Injection dockerfile_location

    Fichier : app/Jobs/ApplicationDeploymentJob.php

    L'entrée manque d'échappement shell approprié ou de validation, permettant une injection directe de commande en utilisant des métacaractères comme ;, && et les pipes.

    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. Exécution de pre_deployment_command

    Fichier : app/Jobs/ApplicationDeploymentJob.php (Lignes 3882-3909)

    Bien qu'un échappement basique soit effectué, la fonction exécute naturellement des commandes shell natives, permettant de déverser des données directement dans les journaux de build.

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

    Correction

    1. Assainir l'entrée dockerfile_location (dans ApplicationDeploymentJob.php) :

    Valider l'entrée à l'aide d'expressions régulières strictes et échapper l'argument 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. Validation au niveau de l'API (bootstrap/helpers/api.php) :

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

    3. Autres recommandations :

    • Appliquer des listes blanches strictes bloquant les métacaractères shell.
    • Corriger la logique de contournement des permissions de déploiement.
    • Auditer les champs équivalents comme docker_compose_location.

    Références et crédits

    • Signaleur / Crédits : ThemeHackers
    • Avis officiel : GitHub Security Advisory (GHSA-qqrq-r9h4-x6wp)
    Télécharger l’outil