Files
singbox_glue/docs/security.md
T

2.6 KiB
Raw Blame History

Безопасность

Секреты

Секретами считаются Hysteria authentication, obfs password, URI целиком, generated config и все backups.

  • CLI не принимает URI в argv.
  • Dataclass скрывает credentials из repr().
  • Ошибки parser не включают исходное значение.
  • diff заменяет secret values на <REDACTED>.
  • state хранит только SHA-256 source/config и безопасный endpoint label.
  • URI/config/backups имеют 0600, каталоги — 0700.
  • subprocess вызывается массивом аргументов без shell.

После попадания действующего URI в чат, issue, shell history или journal оба credential следует перевыпустить.

Fail closed

До изменения production проверяются:

  • policy schema;
  • URI syntax и поддерживаемые параметры;
  • точная версия и with_quic;
  • deterministic candidate;
  • sing-box check.

Неизвестные параметры никогда не игнорируются. Production bypass для другой версии отсутствует.

Anti-leak

Отдельная таблица inet vpn_egress_guard отклоняет forwarding с eth1 напрямую на eth0. Она не принадлежит sing-box и остаётся отдельной от динамической таблицы inet sing-box.

Guard запускается до sing-box. Остановка или удаление guard unit является security-sensitive операцией и не выполняется CLI автоматически.

Имена интерфейсов поступают из уже провалидированного policy, subprocess не использует shell, а замена таблицы выполняется одной nft batch-транзакцией.

Healthcheck

HTTPS healthcheck подтверждает data plane, но раскрывает проверочному endpoint факт обращения с VPN egress IP. URL можно заменить внутренним контролируемым endpoint. Отключение URL ослабляет проверку до состояния systemd.

Ограничения URI 1.13.19

pinSHA256 не преобразуется в certificate_public_key_sha256, потому что это разные fingerprint semantics. ech не преобразуется без проверенного PEM/config list adapter. Silent downgrade TLS запрещён.