← Back to all sparks
N

Nebula

INFRA · APIS
Velocity2.5

Scalable overlay networking tool built on the Noise protocol framework

Overlay network that rewrote its certificate format, then spent a year fixing what it exposed.

mesh-vpnoverlay-networkcertificatesipv6security
Current state
Nebula is a peer-to-peer mesh VPN built around a certificate authority model. The v1.10.0 release was the pivot: IPv6 and multiple addresses in the overlay, plus a new v2 ASN.1 certificate format with a unified interface for external implementations. Everything since has been consequence management — a P256 signature malleability issue that allowed blocklist bypass, a source-IP acceptance flaw tied to the new multi-address certificates, and a run of fixes around route tables and Windows listeners.
Where it's heading
The project has moved from single-IPv4-per-node assumptions toward a genuinely flexible addressing model, and the security fixes since v1.10.0 map directly onto that change — the new certificate features widened what the code has to validate. v1.11.0 shifts attention to the operational surface instead: structured logging, corrected firewall reject-versus-drop semantics, and Windows WFP filters installed by default.
Prediction
The stated plan to assert low-s signature form when validating certificates is the concrete next step visible in these entries; expect it to land as a breaking validation change in a future release.

Recent moves

  1. 18d ago

    Breaking: slog logging, corrected firewall reject/drop directions, Windows WFP filters

    Three breaking changes at once, and operators need all three before upgrading. Logging moves from logrus to slog, changing output format and breaking the embedder API. More consequentially, firewall.inbound_action and firewall.outbound_action were being applied to the opposite direction and are now corrected — anyone who set them is currently getting the other behavior and should swap them.

    View source ↗
  2. 6mo ago

    P256 signature malleability allowed blocklist bypass

    Fixes a blocklist bypass where a P256 signature had two valid representations, giving a certificate two fingerprints and letting one evade the blocklist. Both representations are now checked and newly issued certificates are clamped to low-s form — a direct consequence of the certificate work in v1.10.0.

    View source ↗
  3. 6mo ago

    Fix panic in use_system_route_table introduced by the previous release

    A regression fix for a panic introduced one release earlier, plus comment typos and dependency updates. Cleanup on the v1.10.x branch.

    View source ↗
  4. 6mo ago

    Route-reload, handshake, and Windows listener fixes after the v1.10 rework

    A cluster of fixes covering unsafe routes lost on config reload, ECDSA P256 PEM banners, a Windows regression falling back to a slower UDP listener, and handshake handling for unexpected public keys. Adds a config option controlling recv_error packet acceptance.

    View source ↗
  5. 8mo ago

    IPv6 and multiple addresses in the overlay, plus a v2 certificate format

    ⚡ SPARK

    The release the rest of this window reacts to. It widened both the addressing model and the certificate format, and the security fixes in v1.9.7 and v1.10.3 are both consequences of that widening.

    View source ↗
  6. 10mo ago

    Packets accepted from erroneous source IPs with unsafe_routes or multi-IP certificates

    Fixes Nebula accepting and processing packets from an incorrect source IP when the sender's certificate uses unsafe_routes or multiple IPs. The multi-IP case only exists because of the v2 certificate format, making this the first security consequence of the v1.10 addressing work.

    View source ↗