github sleep3r/mtproto.zig v1.4.0

latest releases: v1.15.2, v1.15.1, v1.15.0...
3 months ago

🇷🇺 Что нового (RU)

Что добавляет этот релиз

v1.4.0 — про внешний вид и прочность: новый дизайн дашборда «Bahnhof Console» и полная аудит-ремедиация безопасности/надёжности по всему репозиторию.

[!NOTE]
Поведение прокси на проводе не меняется — обновление безопасно и рекомендуется: помимо редизайна (чисто визуального) релиз закрывает аудит из 96 находок, включая 3 уровня HIGH. Никаких изменений в конфиге/ссылках не требуется.

Дашборд: редизайн «Bahnhof Console»

Панель mtbuddy setup dashboard полностью перерисована в эстетике вокзального табло (departure-board): крупный hero-вердикт состояния (Busy — N connected / Idle / Offline), приборные гейджи CPU/Memory со спарклайнами, панель сетевого трафика (RX/TX + накопительные итоги), KPI-полоса (активные/максимум, handshakes, всего соединений, дропы), карточки пользователей (ссылки tg:// / t.me + QR) и маскировки (FakeTLS, домен, nginx, health-таймер), плюс живые логи по WebSocket с фильтрами. Заодно починен оверфлоу счётчика при длинных именах пользователей. (#328)

Полный аудит безопасности и надёжности (#331)

Мультиагентный аудит всего репозитория: 94 из 96 находок исправлено (2 e2e-гэпа задокументированы). Самое важное:

  • HIGH — RCE из share-ссылки: поля wireguard:// percent-декодировались в WG .conf без проверки — %0A позволял внедрить PostUp = …, который wg-quick исполняет от root. Теперь управляющие байты отвергаются.
  • HIGH — затирание tls_domain: setup-masking молча перезаписывал домен дефолтом и ломал все розданные ссылки; теперь сохраняет развёрнутый домен (смена — только явно), плюс откат nginx при ошибке nginx -t и reload прокси.
  • HIGH — обрыв failover: проверка fatal-hangup убивала только что поднятый retry/middleproxy→direct; событие на устаревшем fd теперь отбрасывается.
  • Кластеры: use-after-free на срезах TomlDoc, симлинк-LPE через предсказуемые файлы в /tmp под root, secureZero для ключей, корректный half-close без обрезания S2C/C2S под backpressure, привязка minisign-подписи к tag+artifact (anti-rollback), харденинг дашборда (Origin-проверка /ws/logs, CSP, секрет QR не в argv, sandbox systemd-юнита).
  • Документация threat model: добавлен раздел про корреляцию SNI↔IP (свежие fastDPI/ТСПУ) — заимствованный tls_domain палится пассивно, и это часть модели угроз, а не косметика.

Проверено

  • zig build test246/246 + кросс-сборка x86_64-linux/aarch64-linux + zig fmt — зелёные.
  • installer-e2e на 5 ОС (debian 11/12, ubuntu 20.04/22.04/24.04): установка + апдейт (config неизменен) + failover туннель-пула + чистое удаление.
  • e2e-интеграция: FakeTLS/dd/desync/middleproxy-fallback/replay/SIGTERM-drain.

🇬🇧 Release notes (EN)

What this release adds

v1.4.0 is about looks and resilience: a new "Bahnhof Console" dashboard design plus a full-repo security/robustness audit remediation.

[!NOTE]
On-the-wire proxy behavior is unchanged — upgrading is safe and recommended: beyond the (purely visual) redesign, this release closes a 96-finding audit, including 3 HIGH-severity issues. No config or share-link changes are required.

Dashboard: the "Bahnhof Console" redesign

The mtbuddy setup dashboard panel was fully redrawn as a departure-board console: a large hero status verdict (Busy — N connected / Idle / Offline), CPU/Memory instrument gauges with sparklines, a network throughput panel (RX/TX + cumulative totals), a KPI band (active/max, handshakes, total connections, drops), user cards (tg:// / t.me links + QR) and a masking card (FakeTLS, domain, nginx, health timer), plus live logs over WebSocket with filters. Also fixes a counter overflow with long user names. (#328)

Full security & robustness audit remediation (#331)

A multi-agent full-repo audit: 94 of 96 findings fixed (2 e2e gaps documented). Highlights:

  • HIGH — RCE from a share-link: wireguard:// fields were percent-decoded into a WG .conf unchecked — %0A let an attacker inject PostUp = …, which wg-quick runs as root. Control bytes are now rejected.
  • HIGH — tls_domain clobber: setup-masking silently overwrote the domain with the default and broke every distributed link; it now keeps the deployed domain (change is explicit), rolls back the nginx vhost on nginx -t failure, and reloads the proxy.
  • HIGH — failover teardown: the fatal-hangup check killed a just-started retry / middleproxy→direct fallback; stale-fd events are now dropped.
  • Clusters: TomlDoc use-after-free slices, symlink-LPE via predictable /tmp files written as root, secureZero key wipes, a correct relay half-close that no longer truncates S2C/C2S under backpressure, minisign signature bound to tag+artifact (anti-rollback), dashboard hardening (/ws/logs Origin check, CSP, QR secret off argv, sandboxed systemd unit).
  • Threat model docs: a new section on SNI↔IP correlation (recent fastDPI/TSPU builds) — a borrowed tls_domain is detectable passively, and that's part of the threat model, not a cosmetic setting.

Verified

  • zig build test246/246 + x86_64-linux/aarch64-linux cross-builds + zig fmt — green.
  • installer-e2e across 5 OSes (debian 11/12, ubuntu 20.04/22.04/24.04): install + update (config unchanged) + tunnel-pool failover + clean uninstall.
  • e2e integration: FakeTLS/dd/desync/middleproxy-fallback/replay/SIGTERM-drain.

Changelog

  • feat(dashboard): "Bahnhof Console" redesign + fix long-name counter overflow (#328)
  • fix: remediate full-repo audit findings — security, robustness, tests (#331)

Full diff: v1.3.0...v1.4.0

Don't miss a new mtproto.zig release

NewReleases is sending notifications on new releases.