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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-3854-PoC — GitHub RCE через инъекцию push-опции X-Stat | Kitploit
Инструменты/GitHubGitHub/lysophavin18/cve-2026-3854-poc
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHublysophavin18/cve-2026-3854-poc

CVE-2026-3854-PoC

GitHub RCE через инъекцию push-опции X-Stat

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

Популярное

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

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

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

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

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

CVE-2026-3854 PoC — RCE в GitHub через инъекцию параметров push-опции X-Stat

Только для образовательных целей и авторизованных исследований в области безопасности.
Не используйте против любой системы без явного письменного разрешения.


Обзор

CVE-2026-3854 — это уязвимость удалённого выполнения кода (RCE) в конвейере git push в GitHub Enterprise Server (и GitHub.com).

Когда клиент передаёт push-опции (git push -o), внутренний Ruby-код GitHub формирует заголовок X-Stat, объединяя каждое значение опции через точку с запятой в качестве разделителя полей. Поскольку значения вставлялись дословно (без санитизации), злоумышленник мог встроить точки с запятой в push-опцию, чтобы внедрить произвольные пары ключ-значение в заголовок и переопределить критически важные для безопасности настройки — в конечном итоге получив RCE без песочницы от имени пользователя git.

Корневая причина уязвимости

X-Stat: repo_id=12345;user_id=alice;rails_env=production;...;push_option_0=<USER INPUT>

Инъекция normal_value;rails_env=staging в качестве значения push-опции превращается в:

...;push_option_0=normal_value;rails_env=staging

Парсер берёт последнее вхождение каждого ключа, поэтому rails_env теперь равен staging (без песочницы), переопределяя легитимное значение production, установленное ранее.


Требования

  • Python 3.10 или новее (используются встроенные подсказки типов list[str] / dict[str, str])
  • Сторонние пакеты не требуются

Использование

python3 exploi-git.py

Скрипт выполняет три последовательные демонстрации полностью в памяти — без сетевых подключений, shell-команд и записи файлов:

ДемоЧто показывает
1Базовая инъекция точки с запятой, переопределяющая rails_env
2Полная концептуальная цепочка RCE из 3 шагов
3Исправленное поведение — точки с запятой кодируются как percent-encoding, инъекция нейтрализована

Исправление

GitHub устранил уязвимость, добавив percent-encoding для точек с запятой в значениях push-опций перед вставкой в заголовок X-Stat:

normal_value;rails_env=staging  →  normal_value%3Brails_env=staging

Это делает точку с запятой буквальной частью значения и нейтрализует инъекцию.


Ссылки

  • Пост в блоге Wiz Research
  • Блог безопасности GitHub
  • NVD — CVE-2026-3854

Предупреждение

Этот репозиторий предоставляется исключительно в образовательных целях и для поддержки авторизованных исследований в области безопасности. Автор(ы) не несут ответственности за неправомерное использование. Всегда получайте явное письменное разрешение перед тестированием любой системы, которая вам не принадлежит.

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