CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-XV8G-FJ9H-6GMV

GHSA-xv8g-fj9h-6gmv: Missing Authentication in Linkdave Audio Streaming Server

Alon Barad
Alon Barad
Software Engineer

Mar 10, 2026·6 min read·50 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can fully control Linkdave audio streaming sessions via exposed WebSocket and REST endpoints due to a lack of authentication mechanisms.

Linkdave, a high-performance Lavalink rewrite in Go, suffers from a complete lack of authentication on its control plane prior to commit 0f9a00d. This critical vulnerability allows unauthenticated remote attackers to establish WebSocket connections, manipulate REST APIs, and hijack or terminate active audio streaming sessions.

Vulnerability Overview

Linkdave operates as a Go-based audio streaming server, designed as a lightweight alternative to Lavalink. The application relies on a control plane consisting of a REST API and a WebSocket endpoint to manage audio playback, session state, and connected guilds. This control plane is exposed over network ports, typically 8080 or 18080, to receive commands from the primary bot application.

The core vulnerability is classified as CWE-306 (Missing Authentication for Critical Function). Prior to the patch, Linkdave did not implement any authentication or identity verification mechanisms on its network endpoints. The server accepted and processed commands from any inbound connection capable of reaching the listening port.

This architectural omission exposes the entire audio streaming infrastructure to unauthorized access. Any remote actor with network routing to the Linkdave instance can issue administrative commands. The lack of network-level identity checks means the application implicitly trusts all traffic arriving at its designated control ports.

Root Cause Analysis

The root cause of this vulnerability lies in the initial design of the server's HTTP multiplexer and request routing logic. The application utilizes Go's standard http.ServeMux to handle inbound requests for both the REST endpoints and the WebSocket upgrade path. The developers omitted any middleware or handler logic responsible for validating access tokens or session credentials.

In the cmd/linkdave/main.go and server/server/routes.go files, the application defines routes such as /ws and various REST paths. The application wraps REST routes with a withSession middleware function. However, this middleware only extracts the session and guild identifiers from the URL path parameters to construct the operational context. It performs no validation to ensure the requester is authorized to interact with those specific identifiers.

Similarly, the server/server/websocket.go file contains the HandleWebSocket function. This function executes the HTTP-to-WebSocket upgrade using the Gorilla WebSocket library (or similar standard implementations). The upgrade process proceeds unconditionally, granting the requester a persistent, bidirectional communication channel for issuing JSON payloads. The failure to enforce an authentication handshake prior to or during this upgrade process constitutes the primary technical flaw.

Code Analysis and Patch Implementation

Prior to the patch, the application routing blindly accepted connections. The patch, introduced in commit 0f9a00d9d549b16278db81fce6dfec350c2abc01, implements a shared-secret authentication model using a new environment variable, LINKDAVE_PASSWORD. The implementation modifies both the HTTP middleware and the WebSocket handler to enforce identity verification.

The withSession middleware was updated to inspect incoming REST requests for an Authorization header. The server extracts the provided Bearer token and compares it against the configured LINKDAVE_PASSWORD. If the token is missing or incorrect, the server returns an HTTP 401 Unauthorized status code.

For the WebSocket endpoint, the HandleWebSocket function now parses the URL query parameters during the initial HTTP request phase of the upgrade. It specifically looks for a password parameter. The server compares this parameter to the shared secret, rejecting the upgrade if the values do not match.

Despite resolving the immediate vulnerability, the patch introduces several residual security risks. The comparison logic relies on standard Go string comparison (!=), which is not constant-time and theoretically exposes the endpoint to timing side-channel attacks. Furthermore, transmitting the shared secret via a URL query parameter (?password=...) for the WebSocket connection risks credential exposure. Reverse proxies and load balancers routinely log complete request URLs, including query parameters, potentially writing the plaintext password to disk.

Exploitation Methodology

Exploitation of this vulnerability requires no specialized tools beyond a standard network scanner and a WebSocket client. An attacker begins by identifying an exposed Linkdave instance. This is typically achieved by scanning external IP ranges for open TCP ports 8080 or 18080, followed by sending a basic HTTP GET request to verify the service signature.

Once a target is confirmed, the attacker initiates a WebSocket connection to the /ws endpoint. They can utilize standard command-line tools like wscat or write a custom script leveraging the official Linkdave TypeScript client library (version 0.1.4 or earlier). The server accepts the connection immediately without requiring any handshake payloads or headers.

With the connection established, the attacker gains full control over the session state. They can transmit JSON payloads defining commands to join arbitrary voice channels, play unapproved audio streams, or forcefully disconnect legitimate users. Concurrently, the attacker can issue HTTP GET requests to the REST API to enumerate active sessions and extract guild metadata, facilitating targeted disruption.

Impact Assessment

The missing authentication vulnerability yields complete administrative control over the Linkdave instance to any network-adjacent or remote attacker. While this flaw does not provide direct operating system-level remote code execution, it entirely compromises the integrity and availability of the application's primary function. Attackers can arbitrarily control audio playback across all connected Discord guilds.

The vulnerability enables severe denial-of-service conditions. An attacker can systematically enumerate and terminate all active streaming sessions, rendering the bot non-functional for legitimate users. Furthermore, the attacker can command the server to initiate high-bandwidth external connections to download malicious or excessively large audio files, leading to resource exhaustion and potential network saturation.

Additionally, the flaw introduces a significant privacy risk through metadata exposure. By querying the unauthenticated REST endpoints, an attacker can map the bot's deployment footprint. They can extract session identifiers, guild IDs, and active player states, leaking sensitive operational data about the bot's user base and infrastructure scale.

Remediation and Defense

Organizations deploying Linkdave must immediately update their Go server instances to include commit 0f9a00d9d549b16278db81fce6dfec350c2abc01 or newer. Simultaneously, the corresponding client applications must be updated to utilize the linkdave TypeScript library version 0.1.5 or higher, which supports the transmission of the required authentication credentials.

Applying the software update is insufficient without proper configuration. System administrators must explicitly define the LINKDAVE_PASSWORD environment variable using a cryptographically secure, randomly generated string. The server is designed to maintain backward compatibility; if this variable is left undefined or empty, the application falls back to its insecure, unauthenticated state.

To mitigate the residual risks associated with the patch implementation, network-level defenses are mandatory. The Linkdave instance must be isolated from the public internet using strict firewall rules, permitting inbound connections exclusively from the primary application server. Furthermore, Linkdave should be deployed behind a reverse proxy configured for TLS termination. This ensures that the WebSocket query parameters and REST authorization headers are encrypted in transit, preventing credential interception over the wire.

Official Patches

shi-ggFix commit implementing authentication.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected Systems

shi-gg/linkdave (Go Server)linkdave (TypeScript Client)

Affected Versions Detail

Product
Affected Versions
Fixed Version
shi-gg/linkdave (Go server)
shi-gg
< commit 0f9a00d9d549b16278db81fce6dfec350c2abc010f9a00d9d549b16278db81fce6dfec350c2abc01
linkdave (TypeScript Client)
shi-gg
< 0.1.50.1.5
AttributeDetail
CWE IDCWE-306
Attack VectorNetwork
ImpactApplication Takeover / Denial of Service
Exploit StatusProof of Concept
CVSS Score9.8
Authentication RequiredNone

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-306
Missing Authentication for Critical Function

The software does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.

Vulnerability Timeline

Internal disclosure of missing authentication vulnerability.
2026-03-01
Patch released in commit 0f9a00d9d549b16278db81fce6dfec350c2abc01.
2026-03-08
GitHub Advisory GHSA-xv8g-fj9h-6gmv published.
2026-03-08

References & Sources

  • [1]GitHub Advisory: Missing Authentication in Linkdave
  • [2]Linkdave Fix Commit
  • [3]Linkdave Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•2 days ago•GHSA-7PPR-R889-MCF2
7.5

GHSA-7PPR-R889-MCF2: Unbounded WebSocket Message Aggregation in http4s-blaze-server leads to Denial of Service

An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.

Alon Barad
Alon Barad
7 views•5 min read
•2 days ago•GHSA-95CV-R8X4-VH75
7.6

GHSA-95cv-r8x4-vh75: Path Traversal Vulnerability in OpenList Batch Rename Handler

A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.

Amit Schendel
Amit Schendel
9 views•7 min read
•2 days ago•GHSA-P6PH-3JX2-3337
4.3

GHSA-P6PH-3JX2-3337: Horizontal Privilege Escalation and Metadata Information Disclosure via Bleve Search in OpenList

OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.

Amit Schendel
Amit Schendel
8 views•5 min read
•2 days ago•GHSA-86CX-WWF4-PHQ4
6.5

GHSA-86cx-wwf4-phq4: Path Prefix Confusion Authorization Bypass in OpenList

An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.

Amit Schendel
Amit Schendel
7 views•6 min read
•2 days ago•CVE-2026-16584
7.0

CVE-2026-16584: Security Policy Bypass in AWS API MCP Server via Startup Initialization Failure

A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.

Amit Schendel
Amit Schendel
12 views•7 min read
•2 days ago•GHSA-6V4M-FW66-8R4X
6.5

GHSA-6V4M-FW66-8R4X: Path Disclosure and Shell Expansion Bypass in Shescape

An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.

Alon Barad
Alon Barad
6 views•7 min read