Files
singbox_glue/docs/security.md
T

55 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Безопасность
## Секреты
Секретами считаются auth, obfs password, URI целиком, generated config и все
backup-файлы.
- CLI не принимает URI позиционным аргументом;
- dataclass скрывает credentials из `repr()`;
- parser errors не содержат исходный URI;
- diff заменяет secret values на `<REDACTED>`;
- state хранит hashes, версию и endpoint без auth;
- URI/config/backups имеют `0600`, каталоги — `0700`;
- subprocess запускается массивом аргументов без shell.
При попадании URI в чат, issue, history или journal следует заменить оба
credential.
## Fail closed
До изменения production проверяются strict policy, URI, exact 1.14.0,
`with_quic`, `with_gvisor`, deterministic candidate и настоящий `sing-box
check`. Неизвестные параметры не игнорируются.
In-place package upgrade запрещён. Legacy state/config требует ручного
архивирования; автоматической миграции или cross-version rollback нет.
## Same-release backup provenance
Текущий config можно сохранить как last-good только если его SHA и engine
version подтверждены state версии 0.2.0. Каждый автоматический backup имеет
соседний `.meta`, а last-good — `last-good.meta.json`. Несовпадение checksum или
версии блокирует rollback до изменения production.
Metadata защищает от операционной ошибки, но не от атакующего с root-доступом.
## Anti-leak
Отдельная таблица `inet vpn_egress_guard` отклоняет forwarding `eth1 -> eth0`.
Она не принадлежит sing-box и остаётся независимой от таблицы `inet sing-box`.
Package drop-in требует успешного запуска guard перед sing-box.
Systemd dependency не является watchdog для ручного удаления nftables table;
runtime-состояние проверяет `vpn-egressctl doctor`.
## DNS и TLS
`dns_mode=disabled` запрещает новому TUN-механизму 1.14 менять native DNS и
platform interception. DNS контролируется явной route rule. Chrome QUIC
parroting включён (`disable_chrome_parrot=false`); production acceptance обязан
подтвердить совместимый RSA/ECDSA/ACME certificate, поскольку Ed25519 с этим
режимом несовместим.
`pinSHA256` и `ech` отклоняются: молчаливое ослабление TLS запрещено.