# Политика безопасности

## Поддерживаемые версии

| Версия | Поддержка |
|---|---|
| 1.0.x | да |
| < 1.0.0 | нет |

## Как сообщить об уязвимости

Используйте приватный канал GitHub: вкладка **Security** → **Report a vulnerability**.
Не открывайте публичный issue: сообщение об уязвимости в публичном трекере раскрывает её
до исправления.

Что приложить:

- версию пакета (`python tools/ghagent.py --version`) и версию Python;
- команду, которая воспроизводит проблему, и её вывод;
- чем опасность подтверждается: что именно читается, перезаписывается или публикуется.

Ответ — в течение семи дней. Принятая уязвимость исправляется в отдельной ветке, затем
выходит патч-версия с записью в разделе `Security` файла [CHANGELOG.md](CHANGELOG.md).

## Модель угроз

Пакет работает с локальным деревом и с GitHub API от имени владельца. Опасные места:

| Место | Риск | Защита |
|---|---|---|
| `wiki publish --push` | перезапись или удаление чужих страниц | без `--push` — сухой прогон; чужие страницы сохраняются, удаление только через `--prune` |
| `wiki publish` с пустым манифестом | публикация пустой вики | пустой набор страниц — ошибка, публикация не начинается |
| `meta apply --write` | замена списка тем | список сливается с существующим; `--replace-topics` — отдельный флаг |
| `install` / `uninstall` | удаление чужого каталога | `uninstall` требует манифест `.install.json`, иначе отказывается |
| `doc` / `audit` | чтение файлов с секретами | значения не печатаются: сообщение содержит только имя правила, путь и строку |
| `changelog release --write` | порча журнала изменений | запись только после проверки, затем повторная проверка файла |

## Чего пакет не делает

- Не отправляет содержимое репозитория никуда, кроме `api.github.com` (и только по
  командам `audit --repo`, `meta`, `wiki publish`).
- Не хранит и не запрашивает учётные данные: используется существующая авторизация `gh`
  или переменная `GITHUB_TOKEN`, значение которой не печатается.
- Не вызывает `git push --force` и не переписывает историю.
