Sep 19, 2026·5 min read·4 visits
AnyCable-Go's default telemetry configuration used a public token and digested raw command-line secrets into an unsalted SHA-256 fingerprint, exposing administrative credentials to offline cracking if network traffic was captured.
CVE-2026-63406 is an information disclosure vulnerability in AnyCable-go prior to version 1.6.15. The built-in telemetry client is enabled by default with a hardcoded public authentication token ('secret'). This client digests highly sensitive configuration parameters and command-line arguments, including JWT secrets and RPC secrets, into a stable SHA-256 fingerprint. This fingerprint is sent over public networks, exposing those administrative secrets to offline dictionary and brute-force attacks if intercepted.
The vulnerability resides in the built-in telemetry subsystem of AnyCable-Go, a high-performance WebSocket server designed to scale real-time two-way communication in web applications. The telemetry component is responsible for gathering system statistics and server information to help developers monitor platform adoption. Under standard configurations before version 1.6.15, this subsystem was automatically activated upon application launch without administrative initialization.
This default enablement creates an unintended attack surface by transmitting environment metadata to a centralized public endpoint. Because telemetry ran continuously in the background, any deployment using default compilation flags began outbound transmissions immediately upon startup.
The core vulnerability belongs to two weakness classes: CWE-798 (Use of Hard-coded Credentials) and CWE-312 (Cleartext Storage of Sensitive Information). These flaws allow an unauthorized network observer to capture cryptographic data and reconstruct sensitive environment configurations through offline verification mechanisms.
The root cause of the vulnerability lies in the implementation of the telemetry client configurations and fingerprinting routines within the codebase. In telemetry/config.go, the authentication token used to validate telemetry streams with the central registry was defined as a hardcoded static string literal: var authToken = "secret". This static variable was loaded by default, meaning every standard deployment of the software compiled with these settings authenticated its network telemetry traffic using a public, globally identical credential.
Simultaneously, the server attempted to establish a unique but anonymous server identifier known as a cluster fingerprint. The function clusterFingerprint() in telemetry/telemetry.go processed the server configuration along with the raw command-line arguments returned by the system runtime. If an administrator supplied security-critical options on the command line, such as --secret, --jwt_secret, or --http_rpc_secret, these raw command-line strings were included in the configuration structure.
The gathered configuration structure was then directly serialized and passed to a deterministic SHA-256 hashing routine. The resulting hexadecimal hash served as the stable cluster fingerprint. Because the hashing process did not apply a cryptographically secure random salt, the generated output was completely deterministic.
Analyzing the code changes between version 1.6.14 and 1.6.15 shows how the insecure configuration defaults were addressed. The patch changed how the tracker is instantiated and removed the static default authentication token.
Below is the comparison of the configuration initiation in telemetry/config.go before and after the patch:
// VULNERABLE: telemetry/config.go (Pre-1.6.15)
var authToken = "secret" // make it overridable during build time
func NewConfig() *Config {
return &Config{
Token: authToken,
Endpoint: "https://telemetry.anycable.io",
Debug: os.Getenv("ANYCABLE_TELEMETRY_DEBUG") == "1",
CustomProps: map[string]string{},
}
}// PATCHED: telemetry/config.go (Version 1.6.15)
var auth = "" // provide a secret token during the build time to enable tracking
func NewConfig() *Config {
return &Config{
Token: auth,
Endpoint: "https://telemetry.anycable.io",
Debug: os.Getenv("ANYCABLE_TELEMETRY_DEBUG") == "1",
CustomProps: map[string]string{},
}
}By changing the global variable from authToken = "secret" to auth = "", the telemetry engine defaults to an empty token. In telemetry/telemetry.go, the initialization function checks if this token is empty and disables telemetry collection if no token is found:
// PATCHED: telemetry/telemetry.go (Version 1.6.15)
func NewTracker(instrumenter *metrics.Metrics, c *config.Config, tc *Config) *Tracker {
if tc.Token == "" {
return &Tracker{} // Returns unenabled tracker
}
// ... setup and generate cluster fingerprint ...
}An attack against this vulnerability does not rely on sending a malicious payload to the target server. Instead, it relies on passive network interception followed by an offline cryptanalysis phase. An adversary must first capture the telemetry transmission on the network path between the target server and the collection host.
The following sequence diagram outlines the complete attack flow:
Because the fingerprint is generated using a deterministic SHA-256 hashing algorithm over known patterns, the attacker can reconstruct the hash locally. By targeting common dictionary terms and predictable formats (such as --jwt_secret=value), the attacker can quickly compare hashes to find a match and reveal the administrative credentials.
The security impact of CVE-2026-63406 is primarily centered on the compromise of system confidentiality. Successfully extracting administrative secrets allows the attacker to compromise the integrity and availability of the wider application.
If an attacker cracks the jwt_secret or secret variables, they gain the ability to forge valid signatures. This allows them to create custom JSON Web Tokens (JWT) or signed session cookies, facilitating complete authentication bypass. The attacker can then connect to any active WebSocket channel as a highly privileged administrator or impersonate other users on the platform.
The Common Vulnerability Scoring System (CVSS) assigned a base score of 5.9 (Medium) with the vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N. The attack complexity is rated as high because exploitation requires a network interception position and a subsequent offline brute-force phase.
The primary resolution is to upgrade all AnyCable deployments to version 1.6.15 or later. In this version, telemetry is disabled by default because the compiler variable auth is empty.
For deployments where immediate upgrading is not feasible, administrators can apply network-level mitigations. Blocking outgoing traffic from AnyCable servers to the default endpoint telemetry.anycable.io on port 443 prevents the transmission of fingerprint hashes.
Alternatively, administrators should transition sensitive configurations away from command-line arguments. Passing parameters like --secret or --jwt_secret via environment variables (such as ANYCABLE_SECRET or ANYCABLE_JWT_SECRET) instead of CLI arguments prevents them from being parsed into the os.Args array, excluding them from the telemetry fingerprint calculation.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
anycable-go AnyCable | < 1.6.15 | 1.6.15 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-798, CWE-312 |
| Attack Vector | Network (AV:N) |
| CVSS v3.1 | 5.9 (Medium) |
| EPSS Score | 0.0 |
| Exploit Status | Conceptual |
| CISA KEV Status | Not Listed |
The telemetry module used a hardcoded public authentication token ('secret') by default and included raw operational secrets in hashed identifiers.
CVE-2026-63349 is a critical privilege-dropping bypass vulnerability in the AnyIO asynchronous framework (versions 4.14.0 and 4.14.1) on POSIX platforms. Due to a variable assignment typo, supplementary groups specified by the developer are not correctly propagated to the execution backend, resulting in subprocesses retaining the parent process's elevated supplementary group permissions.
CVE-2026-84992 is a Cross-Site Scripting (XSS) vulnerability affecting md-editor-v3 before version 6.5.4. It occurs because the fenced-code block language parser directly interpolates unescaped language metadata into unquoted HTML attributes inside the custom rendering callback. This bypasses the built-in XSSPlugin which runs during the parsing phase, before rendering.
CVE-2026-81505 is a high-severity Broken Object Level Authorization (BOLA) / Insecure Direct Object Reference (IDOR) vulnerability in Convoy, a cloud-native webhooks gateway. In affected versions prior to 26.6.8, the single-item Source retrieval API endpoint authorizes project access but fails to confirm if the requested Source belongs to that specific project. This logical flaw allows authenticated users or project-scoped API key holders to bypass tenant isolation boundaries and retrieve unredacted, plaintext message broker credentials for Apache Kafka, Amazon SQS, RabbitMQ, and Google Cloud Pub/Sub belonging to other tenants. This issue is fully patched in version 26.6.8.
CVE-2026-77339 is a critical security vulnerability in Process Compose before version 1.120.0. The Model Context Protocol (MCP) Server-Sent Events (SSE) listener transport subsystem fails to validate the HTTP Host and Origin headers, and does not enforce authentication. This omissions expose local loopback listeners to DNS rebinding attacks orchestrated by malicious remote websites visited by developers, enabling unauthorized process control and arbitrary command execution.
CVE-2026-77301 is a critical uncontrolled resource allocation vulnerability in the popular Node.js library adm-zip (versions prior to 0.6.1). During ZIP decompression of asynchronous entries, the library trusts the uncompressed size metadata declared in the central directory headers. Because Node.js's streaming zlib API completely ignores the maxOutputLength configuration, a crafted ZIP archive (decompression bomb) causes the application to continually allocate resident memory buffers on the heap without limits, causing rapid memory exhaustion and a process-level Out-of-Memory (OOM) crash.
This report details CVE-2026-91127 (GHSA-3753-m2x2-q623), a high-severity DOM Cross-Site Scripting (DOM XSS) vulnerability in the file-viewer workspace developed by flyfish-dev. The legacy Word document (.doc) parser fails to restrict hyperlink URI schemes when rendering extracted document targets into generated HTML. As a result, a remote attacker can construct a malicious legacy DOC file containing scripts inside hyperlink properties. When a user previews the file and clicks the hyperlink, arbitrary JavaScript executes in the context of the hosting origin, enabling session hijacking, credential theft, or unauthorized API interaction.