1.1: исправления по аудиту безопасности

- hysteria2.sh: строгая проверка --email/--host/--sni, install.env через printf %q,
  SHA256 бинарника в самом скрипте, hy2 update из тега релиза
- 3x-ui.sh: SHA256 установщика 3X-UI, проверка --sni/--host, kit и kit-sub из тега,
  kit-sub без root (DynamicUser + LoadCredential), без cron для меню x-ui
- VERSION, CHANGELOG, SECURITY.md, CI (ShellCheck, Python, тесты генераторов),
  установка с проверкой в README

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
This commit is contained in:
itsnotkubrick
2026-09-30 18:11:43 +00:00
co-authored by Claude Opus 5.5
parent 4f1e5d98cc
commit fdae4588ea
8 changed files with 213 additions and 45 deletions
+45
View File
@@ -0,0 +1,45 @@
# Что нового
## v1.1: kit сходил к аудитору, сдал анализы и теперь не доверяет никому, даже GitHub
Подписчик прислал нам полноценный аудит безопасности. Мы почитали, покраснели и всё починили.
Спасибо: такие письма лучше любых звёзд на GitHub (но звёзды тоже ставьте).
**Безопасность**
- **Hysteria2 больше не верит на слово.** Почта, адрес сервера и сайт маскировки теперь проверяются
строго, а в файл настроек пишутся с экранированием. Раньше особо изобретательная почта могла
выполниться как команда. Теперь `me@gmail.com;rm -rf` получит вежливый отказ.
- **Установщик 3X-UI сверяем по отпечатку.** Мы закрепили не только версию, но и SHA256 файла.
Если на GitHub кто-то подменит установщик, скрипт посмотрит на него как на незнакомца в чате
с «выгодным предложением» и запускать не станет.
- **Hysteria проверяется нашим ключом, а не чужим.** Контрольная сумма бинарника теперь записана
в сам скрипт, а не скачивается из того же места, что и бинарник. Проверять человека по
справке, которую он же и принёс, так себе идея.
- **Всё качаем из релиза, а не из черновиков.** `kit`, `kit-sub` и `hy2 update` берут файлы
из тега версии, а не из ветки `main`, которая может поменяться посреди установки.
- **Подписка больше не root.** `kit-sub` работает от временного пользователя без прав: конфиг
и сертификат ему выдаёт systemd на время работы. Даже если его взломают, ключей от сервера
у него нет.
- **Меню x-ui оставили в покое.** Больше не переписываем чужие файлы по расписанию, только
один раз при установке.
- **Строгие имена.** Параметры `--sni` и `--host` у установщика 3X-UI тоже проверяются.
**Для тех, кто хочет проверить сам**
- В README появилась установка с проверкой: скачать, прочитать, сверить SHA256, запустить.
- `SECURITY.md`: как сообщить об уязвимости, не публикуя её на весь интернет.
- Проверка кода на каждый коммит: ShellCheck, Python, тесты генераторов.
**Как обновиться**
- Новые установки получают всё сразу.
- Hysteria2: `hy2 update`.
- Серверу 3X-UI из версии 1.0 ничего не угрожает: критическая ошибка была только в установщике
Hysteria2 и срабатывала при установке. Перевести подписку на работу без root поможет
`kit update` в версии 1.2. Пока можно просто продолжать пользоваться.
## v1.0
Первая версия: 11 протоколов одной командой, всё через 443, одна подписка на все приложения,
пользователи через `kit user`, генераторы конфигов для XKeen.