Skip to content

Milestone 2.1: Engine hardening + protocol emulators#25

Merged
vxfemboy merged 10 commits into
mainfrom
milestone-2.1-hardening-emulators
Jun 25, 2026
Merged

Milestone 2.1: Engine hardening + protocol emulators#25
vxfemboy merged 10 commits into
mainfrom
milestone-2.1-hardening-emulators

Conversation

@vxfemboy

Copy link
Copy Markdown
Member

Milestone 2.1 — Engine Hardening + Protocol Emulators

Hardens the deception engine for production and makes it far more convincing by adding five protocol emulators. All within blackwall-deception + the blackwalld run wiring.

Hardening

  • Connection cap + session timeout (EngineLimits) — a shared semaphore bounds concurrent deception sessions (at-cap connections are dropped, never queued, so a flood can't exhaust tasks/FDs), and each session is wrapped in a tokio::time::timeout to kill slow-loris clients. Closes [A·M2 follow-up] Idle timeout + connection cap on emulators #21.
  • Supervised transportsblackwalld run collects the v4/v6 TPROXY serve tasks and the NFQUEUE loop into a JoinSet raced against the session-drain loop; a transport death now logs and yields a non-zero exit instead of silently running degraded. Closes [A·M2 follow-up] Supervise engine transport tasks #19.
  • Live banner hot-reload — emulators read banners through a BannerSource::{Fixed,Live} (calling current() per connection), and a notify file-watcher in run drives SharedBanners::reload so banner edits take effect without a restart. Closes [A·M2 follow-up] Wire runtime banner hot-reload into run #20.

Emulators (interactive ServiceEmulators)

  • SSH — version banner + a valid binary KEXINIT, captures the client's version banner. No real crypto (deception scope).
  • SMTP220 greeting then correct 250/354/221/502 reply codes through a basic envelope, with byte/command caps.
  • Redis — RESP PING+PONG, INFO with redis_version, +OK/-ERR, parses both array and inline commands.
  • MySQL — protocol-10 handshake (3-byte LE framing) then an auth-failure ERR packet.
  • PostgreSQL — reads the client StartupMessage, replies with a framed ErrorResponse.

All registered in default_registry on standard ports (22, 25/587, 80/8080, 3306, 5432, 6379) with the generic banner/tarpit fallback. Closes #13, closes #14.

Quality

Deferred (tracked)

@vxfemboy vxfemboy moved this to In review in blackwall Jun 25, 2026
@vxfemboy vxfemboy merged commit e5cd34f into main Jun 25, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from In review to Done in blackwall Jun 25, 2026
@vxfemboy vxfemboy deleted the milestone-2.1-hardening-emulators branch June 25, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

1 participant