Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-34038 — CVE-2026-34038: Аутентифицированное удаленное внедрение команд в Coolify | Kitploit
Инструменты/GitHubGitHub/themehackers/cve-2026-34038
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и Образование
GitHubthemehackers/cve-2026-34038

CVE-2026-34038

CVE-2026-34038: Аутентифицированное удаленное внедрение команд в Coolify

Репозиторий
132 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-34038: Аутентифицированное удаленное внедрение команд в Coolify

Этот репозиторий содержит документацию и анализ для CVE-2026-34038, критической уязвимости внедрения команд в Coolify.

Краткое описание

Аутентифицированная уязвимость удаленного внедрения команд (CWE-78) в Coolify позволяет пользователям с разрешениями приложения "write" добиться удаленного выполнения кода (RCE) и извлечения чувствительных переменных окружения (например, учетных данных базы данных, ключей API) через логи развертывания, даже если среда сборки изолирует сокет Docker.

  • Тип уязвимости: CWE-78 (внедрение команд ОС)
  • Серьезность: Критическая (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 запускать сборки.
  • Поверхность атаки: Общая поверхность атаки больше, чем первоначально предполагалось, поскольку административные/root-привилегии не требуются.

  • Технические детали

    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 (строки 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)
    Скачать инструмент