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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-71557-poc — Локальное доказательство концепции для CVE-2026-71557, демонстрирующее обход пути в хранилище ссылок файловой системы go-git, включая логику эксплуатации и сравнение уязвимой и исправленной версий. | Kitploit
Инструменты/GitHubGitHub/saku0512/cve-2026-71557-poc
Анализ уязвимостейЭксплуатацияТестирование на ПроникновениеБезопасность Цепочки ПоставокОбучение и Образование
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

Локальное доказательство концепции для CVE-2026-71557, демонстрирующее обход пути в хранилище ссылок файловой системы go-git, включая логику эксплуатации и сравнение уязвимой и исправленной версий.

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

Популярное

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

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

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

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

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

CVE-2026-71557: PoC обхода пути в имени ссылки go-git

English version

Обзор

Этот репозиторий содержит безопасный локальный PoC для CVE-2026-71557 на основе публичного advisory go-git GHSA-qgq7-7hm3-q39j.

До исправления storage/filesystem недостаточно проверял имена loose reference и использовал их как путь .git/<reference-name>. Из-за этого передача имени ссылки вида refs/heads/../../config приводила к нормализации .., что позволяло перезаписать .git/config за пределами штатного reference storage.

Этот PoC вызывает реальные API go-git и воздействует только на фиктивный .git/config, созданный во временном каталоге. Он не подключается к внешним Git-серверам, не изменяет существующие репозитории и не выполняет произвольные команды.

Отказ от ответственности

Этот проект предназначен исключительно для образовательных целей и разрешённых этичных проверок безопасности. Не используйте его в средах без соответствующего разрешения.

Детали уязвимости

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • Тип: Path Traversal (CWE-22)
  • Серьёзность: Medium
  • CVSS v3.1: 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • Затронутые версии:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • Исправленные версии:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • Затронутое хранилище: reference storage dotgit в storage/filesystem
  • Незатронутое хранилище: storage/memory

Корневая причина

В v5.19.1 до исправления DotGit.SetRef передавал имя ссылки в setRef непосредственно как имя файла.

fileName := r.Name().String()
return d.setRef(fileName, content, old)

Корнем filesystem-backed storage обычно является .git. Имя ссылки refs/heads/../../config после нормализации пути превращается в config, поэтому запись значения ссылки превращается в запись .git/config. Если вредоносный Git-сервер рекламирует такое имя ссылки, и после маппинга refspec при clone/fetch traversal сохраняется, управляемое атакующим имя ссылки может достичь этого пути кода.

Исправленная версия проверяет имена ссылок на входах SetRef, Ref, RemoveRef и других в filesystem storage и отклоняет имена, выходящие за пределы reference storage.

PoC

Требования

  • Go 1.25 или новее, либо Go с включённым автоматическим получением toolchain
  • Сетевое подключение для первоначальной загрузки модулей

Воспроизведение на уязвимой версии

go.mod зафиксирован на уязвимой версии v5.19.1.

go run .

Ожидаемый основной вывод:

[*] go-git version: v5.19.1
[*] crafted reference: refs/heads/../../config
[*] SetReference error: <nil>
[!] VULNERABLE: .git/config was overwritten through the reference name.

PoC выполняет следующие действия:

  1. Создаёт filesystem-backed Git storage во временном каталоге ОС
  2. Записывает безопасный marker в .git/config
  3. Передаёт hash reference с именем refs/heads/../../config в SetReference
  4. Проверяет, что marker заменён на hash ссылки
  5. Автоматически удаляет временный каталог

Сравнение уязвимой и исправленной версий

Следующий скрипт не изменяет go.mod в репозитории, а с помощью временного модуля последовательно запускает тот же PoC на v5.19.1 и v5.19.2.

./scripts/run-version-matrix.sh

Ожидаемый результат:

go-git v5.19.1
[!] VULNERABLE: .git/config was overwritten through the reference name.

go-git v5.19.2
[+] FIXED: the crafted reference was rejected and .git/config stayed intact.

Если нужно просмотреть временные файлы, добавьте -keep. Указанные каталоги не удаляются автоматически, поэтому после проверки удалите их вручную.

go run . -keep

Область действия PoC

Этот PoC напрямую вызывает уязвимые входы filesystem storage, описанные в advisory, и проверяет перезапись метаданных через path traversal. Вредоносный Git protocol server и транспортный уровень clone/fetch в нём не реализованы.

Меры по устранению

Пользователям v5 следует обновиться до v5.19.2 или новее, пользователям v6 alpha — до v6.0.0-alpha.5 или новее. Если обновление невозможно, не выполняйте clone/fetch с недоверенных Git-серверов в filesystem-backed storage. Приложения, использующие только storage/memory, данной уязвимостью не затронуты.

Справочные материалы

  • GHSA-qgq7-7hm3-q39j
  • go-git PR #2247 (исправление v6)
  • go-git PR #2254 (бэкпорт v5)
  • Коммит исправления v5 f3d0cc1
  • Дополнительный коммит безопасности v5 3b306ef
Скачать инструмент