CVE-2026-29781
vulnerability analysis and mitigation

Overview

CVE-2026-29781 is an authenticated nil-pointer dereference vulnerability in the Sliver C2 framework's Protobuf unmarshalling logic that allows an authenticated actor with captured implant credentials to crash the entire server process. It affects BishopFox Sliver versions up to and including 1.7.3. The vulnerability was published on March 4, 2026, by researcher skoveit via the GitHub Advisory Database. It carries a CVSS v3.1 base score of 6.5 (Medium) and a CVSS v4.0 base score of 2.1 (Low), though its operational impact is disproportionately severe for red team operators relying on the framework (GitHub Advisory, BishopFox Advisory).

Technical details

The root cause is CWE-476 (NULL Pointer Dereference) arising from a systemic lack of nil-pointer validation in Sliver's Protobuf message handlers. In proto3, nested sub-messages are represented as Go pointers and are left nil if omitted by the sender — proto.Unmarshal succeeds without error even when required nested fields are absent. In server/handlers/beacons.go, the beaconRegisterHandler function immediately dereferences beaconReg.Register.Uuid after unmarshalling without first checking whether beaconReg.Register is nil, triggering a runtime panic. The same pattern exists across multiple handlers including createReverseTunnelHandler, socksDataHandler, and several gRPC RPC handlers in server/rpc/. Critically, the mTLS, WireGuard, and DNS transports dispatch handlers in raw goroutines without a recover() block, so the panic propagates to the Go runtime and causes a SIGSEGV process termination; the HTTP transport is unaffected because Go's net/http library includes built-in panic recovery per connection (GitHub Advisory, BishopFox Advisory).

Impact

Successful exploitation causes total operational paralysis of the Sliver C2 infrastructure: the entire sliver-server Go process terminates immediately (SIGSEGV), severing every active implant session and beacon across all transports fleet-wide, evicting all connected operators from the gRPC interface, and requiring manual server restart to restore operations. There is no confidentiality or integrity impact — the vulnerability is a pure availability attack. The operational consequence is severe for red team engagements: implants may trigger kill-date logic or alert defensive monitoring upon repeated C2 check-in failures, and complex pivot chains must be manually re-established after recovery (GitHub Advisory, BishopFox Advisory).

Exploitation steps

  1. Credential Extraction: Obtain a Sliver implant binary deployed to a target environment. Run strings against the binary or dump its embedded configuration block to extract the mTLS client certificate, private key, and Age secret key — this is trivial by default as credentials are embedded in plaintext-accessible form.
  2. Establish mTLS Connection: Using the extracted certificates, establish a valid mTLS connection to the Sliver C2 server on its configured mTLS port (default: 8888), authenticating as a legitimate implant.
  3. Negotiate Yamux Multiplexer: Complete the Yamux stream negotiation over the mTLS connection to gain access to the C2 message routing layer, bypassing network-level protections.
  4. Construct Malformed Payload: Build a sliverpb.BeaconRegister Protobuf message (Envelope Type = 53 / MsgBeaconRegister) where the ID field is populated but the critical nested Register sub-message is explicitly omitted (left nil).
  5. Sign the Envelope: Deterministically sign the malicious envelope using the recovered Age private key so the server accepts it as a legitimate implant message.
  6. Send Payload and Trigger Crash: Transmit the signed malformed envelope to the server. The beaconRegisterHandler in server/handlers/beacons.go attempts to access beaconReg.Register.Uuid on a nil pointer, triggering an unhandled runtime panic that propagates through the unprotected goroutine and terminates the entire sliver-server process with SIGSEGV, instantly severing all active sessions (BishopFox Advisory, PoC Repository).

Indicators of compromise

  • Process: Unexpected termination of the sliver-server process with a SIGSEGV signal; Go runtime panic stack trace in server logs referencing server/handlers/beacons.go and a nil pointer dereference at beaconReg.Register.Uuid.
  • Logs: Sliver server logs showing an mTLS or WireGuard connection followed immediately by a goroutine panic and process exit; absence of a graceful shutdown message.
  • Network: Inbound mTLS connection (default port 8888) from an unexpected source IP using valid implant certificates, followed by an abrupt server-side connection drop and no further server responses.
  • File System / OS: Core dump or crash report generated by the Go runtime in the Sliver working directory; system service manager (e.g., systemd) logs recording an unexpected restart of the sliver-server service.
  • Operational: All operator consoles simultaneously disconnected from the gRPC interface; all active implant sessions disappearing from the session list without operator action (BishopFox Advisory).

Mitigation and workarounds

At the time of the advisory's publication (March 4, 2026), no patched version was available — all versions up to and including 1.7.3 are affected. Operators should monitor the BishopFox Sliver repository for a release that addresses GHSA-hx52-cv84-jr5v and upgrade immediately upon availability. As interim mitigations: strictly control access to deployed implant binaries to prevent credential extraction; consider restricting C2 server exposure to known IP ranges; and implement process supervision (e.g., systemd Restart=always) to automatically restart the server after a crash. For the gRPC operator interface, restrict access to trusted operator IPs only. The advisory recommends the vendor implement nil-pointer validation in all Protobuf handlers and add recover() middleware to mTLS, WireGuard, and DNS transport goroutines (GitHub Advisory, BishopFox Advisory).

Community reactions

The vulnerability was reported by researcher skoveit and published through BishopFox's own security advisory process, indicating responsible disclosure to the vendor. A detailed technical write-up was published at infinitsec.net covering the authenticated nil-pointer dereference in Sliver's handlers. Red Hat and INCIBE-CERT both tracked the vulnerability, and it was indexed by multiple vulnerability aggregators shortly after disclosure. No significant public controversy or widespread social media discussion has been observed, consistent with the niche audience of C2 framework operators (BishopFox Advisory).

Additional resources


SourceThis report was generated using AI

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management