Executive brief
nebula-mesh is a control plane for managing Slack Nebula mesh virtual private networks. A security flaw allows sensitive cryptographic private keys to remain in the server's memory in an unencrypted state for longer than necessary. If an attacker gains access to the server's memory—through a system crash report, a backup, or other local access—they could potentially steal these keys and compromise the security of the entire virtual network.
Technical details
A heap inspection vulnerability exists in nebula-mesh due to a failure to meet the zeroization contract of the keystore package. In internal/pki/resolver.go, the CAManager is constructed with a plaintext ed25519.PrivateKey, but the underlying memory slice is not wiped before the reference is dropped. Consequently, decrypted CA private keys persist in the process heap until the Go garbage collector scavenges the slice, which can take minutes to hours. An attacker with local access (e.g., via ptrace, core dumps, or swap files) could recover these keys. The issue is addressed in version 0.3.7 by implementing and calling a Wipe() method to zeroize the keys immediately after use.
Affected products
- forgekeep nebula-mesh < 0.3.7
Timeline
- 2026-05-20: disclosed: Initial GitHub security advisory published
- 2026-06-02: patched: Version 0.3.7 released with fix
- 2026-07-28: advisory: NVD publication date