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

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

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

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

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

Категории

Все категории
Loading categories
push-guard — Локальный Git pre-push хук и сканер файловой системы, который обнаруживает вероятные утечки секретов, редактирует совпавшие значения и блокирует push без телеметрии и сетевого доступа. | Kitploit
Инструменты/GitHubGitHub/dragon-lady/push-guard
Оборонительные ИнструментыСтатический анализСкриптинг и автоматизацияАудит конфигурацииDevSecOpsОбнаружение СекретовБезопасность Цепочки Поставок
GitHubdragon-lady/push-guard

push-guard

Локальный Git pre-push хук и сканер файловой системы, который обнаруживает вероятные утечки секретов, редактирует совпавшие значения и блокирует push без телеметрии и сетевого доступа.

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

Популярное

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

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

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

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

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

Push Guard

Push Guard — это локальный Git-хук pre-push для защиты от вероятных утечек секретов.

Он сканирует содержимое, отправляемое при push, сообщает о вероятных шаблонах секретов, скрывает все совпавшие значения и завершается с ненулевым кодом, чтобы Git заблокировал push.

Создано и поддерживается Dragon Lady - github.com/Dragon-Lady - X: @answerislove2

Обновление с 0.4.2: критическое изменение

Версия 0.4.3 удаляет встроенное исключение # push-guard: ignore. После обновления могут начать блокироваться push и пакеты, которые ранее проходили. Перед обновлением общих хуков или установок CI проверьте каждый использующий репозиторий:

git grep -n -i 'push-guard:[[:space:]]*ignore'

Проверьте каждое совпадение. Удалите секреты и приватные материалы; ни то, ни другое не может быть исключено. Для легитимных фикстур workflow/IOC добавьте в .push-guard-allow только проверенный точный путь в репозитории и точные идентификаторы правил workflow.*. Встроенные маркеры теперь являются обычным текстом, в том числе в тестах и документации. Не преобразуйте все строки с маркерами в исключения автоматически. Рассматривайте любое новое исключение как изменение, критичное для безопасности.

Хук pre-push читает исключения из объявленного базового коммита назначения, а не из рабочей копии или коммитов-кандидатов. Новое или расширенное исключение должно быть проверено и установлено отдельно, прежде чем оно сможет освободить последующий push. Для push с несколькими ref применяются только исключения, общие для всех базовых коммитов назначения. Новые ref без объявленной базы не получают исключений.

scan аналогично читает политику из --base. При аудите более широкого исторического диапазона с отдельно проверенным снимком политики явно передайте --allow-list-ref <reviewed-40-character-commit-SHA>. Это явное решение о доверии со стороны вызывающего; никогда не подставляйте политику непроверенного кандидата. scan-package продолжает использовать выбранную вызывающим политику --repo, вне артефакта. При сканировании недоверенных сборок указывайте проверенный каталог политики.

Запустите push-guard scan --base <trusted-base> --head HEAD новой версии и push-guard scan-package dist/* для фактических исходящих изменений и собранных артефактов перед обновлением установленного хука. Пути членов архива могут отличаться от путей в исходниках; проверяйте эти точные пути отдельно. Сохраняйте существующую установленную версию, пока затронутые репозитории не завершат эту миграцию.

Веб-сайт

Публичная целевая страница: push-guard.netlify.app

Статическая целевая страница проекта находится в docs/ и не имеет runtime-зависимостей, внешних скриптов, аналитики или удалённых ресурсов. Её можно разместить с помощью GitHub Pages из каталога docs/ или развернуть на Netlify с помощью включённого netlify.toml (без команды сборки; каталог публикации docs).

Текущий проект Netlify использует ручные развёртывания. Один лишь Git push не обновляет публичную страницу: публикуйте содержимое docs/ после каждого релиза и проверяйте живую версию, социальное изображение и заголовки ответов. Файл docs/_headers сохраняет заголовки безопасности при прямом развёртывании этого каталога.

Позиция по безопасности

  • Локальная проверка целей только для чтения. Без телеметрии.
  • По умолчанию без сети. Только явная опция Sweep --send включает агрегированные оповещения на настроенные назначения; Git-защита остаётся офлайн.
  • Никаких установок пакетов или изменения целевых файлов во время сканирования.
  • Никакие совпавшие значения секретов или строки исходников не выводятся, не логируются и не сохраняются.
  • Режим Git использует подпроцесс git только для чтения диффов коммитов, отправляемых деревьев, настроенных путей хуков и метаданных игнорирования. Существующая точка входа хука сохранена, а проверка сырого содержимого и исходящей истории усилена.
  • Sweep читает выбранные файлы вне Git, внутри $HOME, и не запускает дочерние процессы, включая Git.
  • По умолчанию результаты сканирования не записываются. Sweep создаёт один случайный 32-байтовый ключ HMAC в $XDG_STATE_HOME/push-guard-sweep/fp.key (по умолчанию ~/.local/state/push-guard-sweep/fp.key) для стабильных, непредсказуемых отпечатков. Этот ключ является явным исключением из правила «по умолчанию данные не хранятся». Он не содержит отсканированных данных. Каталог состояния имеет права 0700, а файлы создаются с правами 0600.
  • Явные файлы Sweep --baseline и --output содержат отредактированные локальные метаданные; --send сохраняет ключевые квитанции дедупликации, но никогда не учётные данные оповещений или секреты.
  • Никаких заявлений о том, что репозиторий или машина чисты. Совпадения — это зацепки для проверки, а не доказательство того, что учётные данные остаются действительными.

Блокировка push — это ответ Git на рекомендацию. Push Guard остаётся работающим только на чтение и не изменяет файлы. Обход доступен через git push --no-verify, когда известно, что совпавшее значение не является секретом.

Sweep: секреты на диске

Команда push-guard sweep и псевдоним push-guard-sweep обеспечивают одинаковую локальную проверку. Они требуют Python 3.11 или новее из существующего пакета и не имеют дополнительных зависимостей времени выполнения. Тесты разработки используют необязательный extra test (python -m pip install ".[test]", затем PYTHONPATH=src python -m pytest -q из корня репозитория). Релиз 0.4.0 добавляет Sweep. CI устанавливает этот extra для разработки и запускает весь набор тестов pytest, включая устаревшие случаи unittest. Тесты релиза выполняются в отдельной задаче; эта задача никогда не передаёт артефакты дистрибутива в публикацию. Задача сборки артефактов не устанавливает тестовые зависимости. Sweep не устанавливает и не включает планировщик.

push-guard sweep --list-targets
push-guard sweep --roots ~/projects --class stray
push-guard-sweep --format json --output ~/sweep-report.json
push-guard-sweep --baseline ~/sweep-baseline.json
push-guard-sweep report --format html --output ~/sweep-report.html
push-guard-sweep print-timer --interval 7d

Каждое сканирование также учитывает перечисленные ниже расположения по умолчанию: историю, dotfile-файлы, конфигурации и логи. --roots изменяет корни поиска .env* и пользовательских include-шаблонов; используйте --exclude, чтобы сузить остальные наборы по умолчанию. Повторяющийся --include GLOB добавляет файлы в рамках существующих ограниченных поисков, а повторяющийся --exclude GLOB удаляет пути. Glob-шаблоны сопоставляются с базовыми именами, путями относительно HOME или абсолютными путями. Исключения имеют приоритет; include-шаблоны не могут переопределить исключения безопасности или ограничения глубины. ~ в аргументах путей CLI раскрывается. Сканируемые пути должны оставаться внутри $HOME.

  • История: история оболочки Bash, Zsh, Python, Node, PostgreSQL, MySQL, SQLite и .lesshst. Текст истории оболочки SQLite отделён от файлов баз данных.
  • Dotfiles: .bashrc, .zshrc, .profile, .bash_profile, .npmrc и .docker/config.json; отдельные файлы JSON, TOML, YAML, INI и CONF в .config на глубине не более четырёх уровней каталогов ниже него.
  • Файлы .env*: в выбранных корнях (по умолчанию HOME), на глубине не более шести уровней каталогов. Деревья зависимостей, виртуальные окружения, метаданные Git и кэши исключаются из этого поиска.
  • Логи: файлы .log и файлы внутри logs/, на глубине не более четырёх уровней каталогов ниже .local/state, .cache, .codex, .config/Cursor/logs и настроенных log_dirs.
Скачать инструмент