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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-53652-Jenkins-Git-Parameter-Analysis — CVE-2025-53652: Анализ параметра Git в Jenkins | Kitploit
Инструменты/GitHubGitHub/pl4tyz/cve-2025-53652-jenkins-git-parameter-analysis
Анализ уязвимостейАнализ КодаЭксплуатацияDevSecOpsКомандование и УправлениеОбучение и Образование
GitHubpl4tyz/cve-2025-53652-jenkins-git-parameter-analysis

CVE-2025-53652-Jenkins-Git-Parameter-Analysis

CVE-2025-53652: Анализ параметра Git в Jenkins

Репозиторий
2321 год назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2025-53652: Уязвимость невалидированного ввода плагина Git Parameter для Jenkins.

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

Эта уязвимость возникает из-за того, что управляемый пользователем ввод из параметров сборки Jenkins небезопасно внедряется в команду Git checkout.

Пользовательский ввод предоставляется в качестве параметра сборки (например, gitParameters), который может содержать вредоносные команды оболочки.

Этот параметр оборачивается в GitParameterValue (расширяющий StringParameterValue), чей метод buildEnvironment() раскрывает его как переменную окружения в контексте сборки без очистки.

Во время процесса SCM checkout Jenkins загружает переменные окружения сборки через build.getEnvironment().

Имя ветки, используемое для checkout (localBranchName), получается из этих переменных окружения.

Затем имя ветки напрямую передаётся методу CheckoutCommand.branch().

Наконец, CheckoutCommand.execute() вызывает базовую команду Git CLI, которая конкатенирует имя ветки без валидации или экранирования.

Это позволяет осуществить инъекцию команд, дающую атакующему возможность выполнять произвольные команды оболочки на хосте сборки Jenkins.

Анализ

  1. Метод createValue, обрабатывающий пользовательский ввод (например, из HTTP POST JSON-нагрузки). Именно здесь Jenkins принимает предоставленные пользователем значения параметров через запрос (например, "selected": "master; rm -rf /"). Ввод оборачивается в GitParameterValue, который расширяет StringParameterValue, без очистки или валидации ввода. Это означает, что сырые пользовательские данные принимаются как параметр сборки и сохраняются как экземпляр ParameterValue. createValue.png

  2. Класс GitParameterValue, расширяющий StringParameterValue, GitParameterValue наследуется от StringParameterValue, но не добавляет никакой очистки. Цепочка конструкторов означает, что пользовательский ввод теперь хранится в объекте, который позже будет использоваться Jenkins для построения переменных окружения. Это распространяет вредоносный ввод в переменные окружения сборки Jenkins. gitParameterValue.png

  3. Класс StringParameterValue и его метод buildEnvironment. Этот метод критичен — он раскрывает параметр как переменные окружения в контексте сборки, выполняя:

    root@kitploit:~
    env.put(name, value);
    env.put(name.toUpperCase(Locale.ENGLISH), value);
    

    Поскольку значение — это неочищенный пользовательский ввод, это позволяет вредоносному вводу попасть в переменные окружения Jenkins, делая его доступным для последующих процессов, таких как Git-команды. stringParameter.png

  4. Метод _checkout в плагине GitSCM. Этот метод вызывает build.getEnvironment(listener), который собирает переменные окружения, включая те, что были установлены ранее вредоносным параметром. Он использует эти переменные для получения имени ветки (через localBranchName), которое затем передаётся в CheckoutCommand. Переменная окружения из вредоносного параметра напрямую попадает в процесс checkout. checkout.png

  5. Создание CheckoutCommand и установка ветки/ссылки с пользовательским вводом. CheckoutCommand.branch(localBranchName) использует неочищенную переменную окружения. Поскольку localBranchName пришёл из управляемых пользователем переменных окружения, он внедряет произвольные команды в checkout. Это создаёт предпосылки для инъекции команд при вызове execute(). checkoutCommand.png

  6. Метод CheckoutCommand.execute(), который выполняет команду Git CLI. Это финальный шаг, на котором внедрённая строка ветки передаётся напрямую в системную Git CLI без экранирования или очистки. В результате вредоносная нагрузка выполняется как команды оболочки, что позволяет удалённо выполнять код на хосте Jenkins. execute.png

Заключение

Этот анализ показывает, как плагин Git Parameter для Jenkins в сочетании с плагином Git SCM может привести к критической уязвимости инъекции команд. Из-за небезопасного раскрытия управляемых пользователем значений параметров как переменных окружения и последующей передачи их напрямую в команды Git CLI без надлежащей очистки, атакующие могут выполнять произвольные команды на сервере сборки Jenkins.

Эта цепочка нарушения доверия — от начальной вредоносной JSON-нагрузки до финального выполнения в оболочке — подчёркивает важность строгой валидации ввода и безопасной обработки параметров сборки в системах непрерывной интеграции.

Пользователям и администраторам следует убедиться, что они используют обновлённые версии Jenkins и всех плагинов, а также тщательно проверять любые параметры, влияющие на команды оболочки. Меры защиты, такие как очистка ввода, разрешение только разрешённых веток или изоляция сред сборки, могут снизить риск.

Понимание этого потока даёт специалистам по безопасности и разработчикам необходимые знания для обнаружения, предотвращения и устранения подобных уязвимостей инъекций в Jenkins или аналогичных CI/CD платформах.

Скачать инструмент