--- type: concept tags: [parking, security, access-control, protocol] sources: [parking-system-architecture] updated: 2026-06-14 --- # UHPPOTE UDP Protocol (the weakness) The [[uhppote-controller]] communicates over **UDP port 60000 with no authentication and no encryption**. Anyone who can place a packet on that LAN can send an "open" command to any door. This is *the* security issue โ€” not safety (safety is the barrier operator's, per [[barrier-not-a-door]]). (See [[parking-system-architecture]] ยง6.) **Mitigation: [[network-isolation]] is mandatory.** The security boundary is the network because it cannot be the device. ## Why you can't fix it in firmware The open-source `uhppoted` ecosystem is **protocol reverse-engineering only** โ€” clients speaking the existing UDP protocol. No source, SDK, schematic, or toolchain to build/flash custom firmware. The controller accepts only the **manufacturer's official** firmware images. You cannot configure or patch your way to authentication on this hardware. ## Unauthenticated commands that undermine the log The record-level log is append-only, but these don't touch individual records: | Vector | Command | Effect | | --- | --- | --- | | Blinding | `record-special-events false` | Stops logging door events going forward | | Wipe | `restore-default-parameters` | Factory reset โ€” clears config + event state | | Rollover | (generate events / fall behind) | Finite circular buffer; old events overwritten | | Time skew | `set-time` | Corrupts / backdates timestamps | | Index desync | `set-event-index` | Moves the retrieval pointer; naive ingestion skips events | The defensive response is [[event-log-ingestion]]. The preventive alternative is the [[esp32-custom-controller]].