Urgent.News

What's breaking now, across thousands of outlets.

Tech

Unmoor: another take on a roaming remote terminal

I published Unmoor, an experimental encrypted, authenticated UDP terminal and file transport for Linux and macOS. The basic idea is not new. Mosh already demonstrated how useful it is for a remote terminal to survive address changes and unreliable networks. Unmoor explores a different set of trade-offs around that general problem. The session is identified by a cryptographic identity rather than…

Unmoor is an experimental encrypted and authenticated UDP terminal and file transport for Linux and macOS. This project builds upon previous concepts, such as Mosh, which showed how remote terminals can maintain functionality even when facing address changes and unreliable networks. Instead of focusing on a single set of trade-offs, Unmoor takes a different approach to address these challenges.

In Unmoor, sessions are identified by a cryptographic identity rather than an address tuple. This means that changes in address or NAT do not disrupt the session. Once a usable UDP path is restored, the session can resume seamlessly. Another key difference lies in the way terminal data is managed. While Mosh synchronizes terminal screen state, allowing for some intermediate output to be delayed, Unmoor focuses on repairing the byte stream.

Each byte admitted by Unmoor is either delivered exactly as intended or preserved for repair. If the retained history exceeds a certain limit, backpressure is applied, preventing silent dropping of admitted bytes that could otherwise block the producing command.

The bootstrap process in Unmoor differs from traditional methods like SSH. While SSH authenticates the initial exchange using public records, Unmoor derives fresh session keys locally using a combination of hybrid X25519 and ML-KEM-1024 key agreement. Post-quantum key agreement is enabled by default, with the option to downgrade to other modes when necessary. Post-quantum key agreement is required by default.

Once the bootstrap is complete, terminal and file traffic flow over encrypted and authenticated UDP. To ensure security, specific measures are in place. A listener adopts a new return address only after a fresh authenticated packet advances the replay window, preventing replayed packets from redirecting the session multiple times. Additionally, multiple authenticated UDP legs can belong to a single session, and file transfers undergo verification before installation to ensure the entire file is successfully transferred.

Unmoor also prioritizes security and user experience. By default, the client confines itself using no_new_privs, Landlock, and seccomp. The client reports helpful statuses such as SYNC, OUT-OF-SYNC, and STALLED, rather than silently delivering gaps in the connection. The concept of "multiple legs" doesn't necessarily imply multiple physical network paths, as different UDP source ports can exercise different RSS/ECMP choices.

However, this alone does not guarantee path diversity. Importantly, Unmoor is not a VPN, relay, or NAT hole-puncher. It still requires the client to be able to reach the listener's UDP port. The client doesn't require root privileges, capabilities, or a kernel module, and existing SSH credentials can authenticate the introduction without a separately provisioned Unmoor key.

Version 0.1.0 (protocol v1) is currently in an experimental stage and has not undergone an external security audit. It is not intended to be exposed as a public service endpoint, and protocol v1 may undergo changes without a compatibility promise. The project was developed end-to-end with AI assistance, encompassing implementation, specification, testing, reviews, and documentation.

The developer maintains responsibility for the code, and its provenance should be considered when evaluating its design decisions and security limitations. To build and test Unmoor, clone the repository, navigate to the project directory, and run the provided make commands. The repository also contains usage instructions for a first remote run.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Reconnaissance Comes First

Part 1 of 4 in the series: Wireless and Wired IP Camera Exposure Understanding the client’s exposure before deeper assessment IP cameras can reach a network in different ways.

  • Reconnaissance prioritized over direct interaction with IP cameras
  • Data gathered through local discovery, search engines, public tech info
  • Goal is to create comprehensive picture of environment and camera interfaces

More from Tuesday 15 September →