Signal K Server: Server-Side Request Forgery via Remote Connection Endpoints
Published Sep 15, 2026 · Updated Nov 3, 2026
Original summary
Normalized public record · Updated Nov 3, 2026
Signal K Server: Server-Side Request Forgery via Remote Connection Endpoints
Publisher and source text is retained separately from QFinch interpretation.
QFinch assessment
signalk-server versions up to and including 2.27.0 contain a Server-Side Request Forgery (SSRF) vulnerability in three administrative endpoints used for remote Signal K server connection management. The makeRemoteRequest() function accepts attacker-controlled host, port, useTLS, and selfsignedcert parameters without any validation, allowing an attacker to force the server to make arbitrary HTTP/HTTPS requests to internal network resources, cloud metadata services, and other unintended destinations. When security is not configured (the default state), these endpoints require no authentication.
Potential impact
1. Internal Network Scanning: An attacker can probe internal hosts and ports. The response distinguishes between open ports (HTTP response returned), closed ports (connection refused error), and filtered ports (timeout after 10 seconds). 2. Cloud Metadata Exfiltration: On cloud-hosted instances (AWS EC2, GCP, Azure), an attacker can reach the instance metadata service at 169.254.169.254 to steal IAM credentials, instance identity tokens, and other sensitive metadata. 3. Internal Service Data Exfiltration: The testSignalKConnection endpoint returns the full response body from the target, allowing reading of data from internal HTTP services not otherwise accessible from the internet. 4. Server-Side POST Requests: The requestAccess endpoint sends a POST request with attacker-controlled JSON body (clientId, description), enabling interaction with internal APIs that accept POST requests. 5. Lateral Movement: In containerized or Kubernetes environments, the server can be used to access cluster-internal services, the Kubernetes API, or other containers on the Docker network.
Technical context
Vulnerable Function The core vulnerability is in makeRemoteRequest() at src/serverroutes.ts:2483-2524: Missing Validation The function performs zero validation on the destination host. The following address ranges are all reachable: - Loopback: 127.0.0.1, ::1, localhost - RFC 1918 private ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 - Link-local / Cloud metadata: 169.254.169.254 (AWS EC2 instance metadata, GCP, Azure IMDS) - IPv6 link-local: fe80::/10 - Any arbitrary external host: enabling the server as an open proxy Authentication Bypass via Default Configuration The endpoints are protected by addAdminMiddleware() (lines 2339-2345): However, when security is not configured, the server uses dummysecurity.ts, where addAdminMiddleware is a no-op: This means on a default installation with no admin user created, all three endpoints are accessible without any authentication. Additional Attack Surface: TLS Verification Bypass The selfsignedcert parameter directly controls rejectUnauthorized: When an attacker sets selfsignedcert: true, the server will connect to any HTTPS endpoint without verifying the TLS certificate, enabling MITM attacks on the outbound connection. Additional Attack Surface: Path Traversal in checkAccessRequest The checkAccessRequest endpoint interpolates requestId directly into the URL path: An attacker can use path traversal (e.g., requestId: "../../other/endpoint") to target arbitrary paths on the destination host.
Evidence: public source recordsAffected products
| Affected package, product or range | Fix status |
|---|---|
| Consult the referenced vendor advisory for affected versions. | Consult source advisory |
Matching a version is only one part of assessing exposure. QFinch has not assessed your environment on this public page.
Remediation
Apply the vendor-supported fixed release or mitigation, then verify the affected component is no longer reachable.
- Confirm the affected product and reachable code path exist in your environment.
- Apply the vendor-supported patch or mitigation from the primary advisory.
- Rescan the exact deployed revision and retain verification evidence.
Evidence coverage
- SSVC priority
- LOW
- Confidence
- Not available
- Aliases
- None reported
Scores appear only when corresponding evidence exists. Missing data is never interpreted as zero risk.
Sources and record history
Record history
Published Sep 15, 2026 · Last refreshed Nov 3, 2026